[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] b7c2f7aa04b678e18045dd32ecd6fb53642f6e2e
[INFO] testing dmytro-yemelianov/raps-demo against master#2fd6efc32704647e64d3d646d21c4c68eae100e4 for pr-149852-1
[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 2fd6efc32704647e64d3d646d21c4c68eae100e4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "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" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded open v5.3.3
[INFO] [stderr]   Downloaded base64ct v1.8.2
[INFO] [stderr]   Downloaded tracing-appender v0.2.4
[INFO] [stderr]   Downloaded zmij v1.0.9
[INFO] [stderr]   Downloaded proc-macro2 v1.0.104
[INFO] [stderr]   Downloaded syn v2.0.112
[INFO] [stderr]   Downloaded ratatui v0.25.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b78ffc519639da4af799b8d3610df060583906eeca4f9cf451961d88c75c2525
[INFO] running `Command { std: "docker" "start" "-a" "b78ffc519639da4af799b8d3610df060583906eeca4f9cf451961d88c75c2525", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b78ffc519639da4af799b8d3610df060583906eeca4f9cf451961d88c75c2525", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b78ffc519639da4af799b8d3610df060583906eeca4f9cf451961d88c75c2525", kill_on_drop: false }`
[INFO] [stdout] b78ffc519639da4af799b8d3610df060583906eeca4f9cf451961d88c75c2525
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 44c03e2bd5d7a687dfffe499df536abfd8ccfee49353c586476aa2c06907449c
[INFO] running `Command { std: "docker" "start" "-a" "44c03e2bd5d7a687dfffe499df536abfd8ccfee49353c586476aa2c06907449c", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.104
[INFO] [stderr]    Compiling libc v0.2.179
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling zmij v1.0.9
[INFO] [stderr]    Compiling serde_json v1.0.148
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling zstd-safe v5.0.2+zstd.1.5.2
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling http-body v0.4.6
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling base64ct v1.8.2
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling password-hash v0.4.2
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling is-docker v0.2.0
[INFO] [stderr]    Compiling clap_lex v0.7.6
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling clap_builder v4.5.54
[INFO] [stderr]    Compiling pbkdf2 v0.11.0
[INFO] [stderr]    Compiling is-wsl v0.4.0
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling itertools v0.12.1
[INFO] [stderr]    Compiling flate2 v1.1.5
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling syn v2.0.112
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling ipnet v2.11.0
[INFO] [stderr]    Compiling pathdiff v0.2.3
[INFO] [stderr]    Compiling constant_time_eq v0.1.5
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling cc v1.2.51
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling open v5.3.3
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling crossterm v0.27.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]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling bzip2 v0.4.4
[INFO] [stderr]    Compiling stability v0.1.1
[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 strum_macros v0.25.3
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling strum v0.25.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zstd v0.11.2+zstd.1.5.2
[INFO] [stderr]    Compiling ratatui v0.25.0
[INFO] [stderr]    Compiling clap v4.5.54
[INFO] [stderr]    Compiling zip v0.6.6
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling tokio-util v0.7.17
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tracing-appender v0.2.4
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-tls v0.5.0
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling 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 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: 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:27:20
[INFO] [stdout]    |
[INFO] [stdout] 27 |     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] 27 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 27 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 |     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] 31 -     Instruction(String),
[INFO] [stdout] 31 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 29 |     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:44:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 43 |     /// Get a short summary string for display
[INFO] [stdout] 44 |     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:81:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     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 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: 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:27:20
[INFO] [stdout]    |
[INFO] [stdout] 27 |     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] 27 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 27 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 |     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] 31 -     Instruction(String),
[INFO] [stdout] 31 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 29 |     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:44:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 43 |     /// Get a short summary string for display
[INFO] [stdout] 44 |     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:81:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 15s
[INFO] running `Command { std: "docker" "inspect" "44c03e2bd5d7a687dfffe499df536abfd8ccfee49353c586476aa2c06907449c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "44c03e2bd5d7a687dfffe499df536abfd8ccfee49353c586476aa2c06907449c", kill_on_drop: false }`
[INFO] [stdout] 44c03e2bd5d7a687dfffe499df536abfd8ccfee49353c586476aa2c06907449c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c1ff6b13478f662ab4ee502bf65e8a12c0c6275a8f4654fe7f2cd5975af5e5ac
[INFO] running `Command { std: "docker" "start" "-a" "c1ff6b13478f662ab4ee502bf65e8a12c0c6275a8f4654fe7f2cd5975af5e5ac", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling tokio-util v0.7.17
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling tokio-test v0.4.4
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-tls v0.5.0
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling 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 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: 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:27:20
[INFO] [stdout]    |
[INFO] [stdout] 27 |     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] 27 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 27 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 |     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] 31 -     Instruction(String),
[INFO] [stdout] 31 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 29 |     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:44:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 43 |     /// Get a short summary string for display
[INFO] [stdout] 44 |     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:81:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn download_workflow_assets(&self, workflow: &WorkflowMetadata) -> anyhow::Result<Vec<PathBuf>> {
[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]    = note: `#[warn(unused_imports)]` (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 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: 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: 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:27:20
[INFO] [stdout]    |
[INFO] [stdout] 27 |     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] 27 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 27 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 |     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] 31 -     Instruction(String),
[INFO] [stdout] 31 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 29 |     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:44:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 43 |     /// Get a short summary string for display
[INFO] [stdout] 44 |     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:81:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn download_workflow_assets(&self, workflow: &WorkflowMetadata) -> anyhow::Result<Vec<PathBuf>> {
[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: 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: 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:27:20
[INFO] [stdout]    |
[INFO] [stdout] 27 |     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] 27 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 27 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 |     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] 31 -     Instruction(String),
[INFO] [stdout] 31 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 29 |     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:44:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 43 |     /// Get a short summary string for display
[INFO] [stdout] 44 |     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:81:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     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: 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:27:20
[INFO] [stdout]    |
[INFO] [stdout] 27 |     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] 27 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stdout] 27 +     DownloadAssets(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/preflight.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 |     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] 31 -     Instruction(String),
[INFO] [stdout] 31 +     Instruction(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RunCommand` is never constructed
[INFO] [stdout]   --> src/tui/preflight.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum CheckAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 29 |     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:44:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl PreflightStatus {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 43 |     /// Get a short summary string for display
[INFO] [stdout] 44 |     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:81:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl PreflightChecker {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     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]     Finished `test` profile [unoptimized + debuginfo] target(s) in 46.58s
[INFO] running `Command { std: "docker" "inspect" "c1ff6b13478f662ab4ee502bf65e8a12c0c6275a8f4654fe7f2cd5975af5e5ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c1ff6b13478f662ab4ee502bf65e8a12c0c6275a8f4654fe7f2cd5975af5e5ac", kill_on_drop: false }`
[INFO] [stdout] c1ff6b13478f662ab4ee502bf65e8a12c0c6275a8f4654fe7f2cd5975af5e5ac
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 6d3d154b3e6c9f09664a10b603701154afed261b7560b93ff5b29b66ca22336b
[INFO] running `Command { std: "docker" "start" "-a" "6d3d154b3e6c9f09664a10b603701154afed261b7560b93ff5b29b66ca22336b", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `Borders`
[INFO] [stderr]   --> src/tui/flowchart.rs:10:22
[INFO] [stderr]    |
[INFO] [stderr] 10 |     widgets::{Block, Borders, Paragraph, Widget, StatefulWidget},
[INFO] [stderr]    |                      ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `label_style`
[INFO] [stderr]    --> src/tui/flowchart.rs:131:13
[INFO] [stderr]     |
[INFO] [stderr] 131 |         let label_style = Style::default().fg(Color::White).add_modifier(Modifier::DIM);
[INFO] [stderr]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_label_style`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_selected_workflow` is never used
[INFO] [stderr]     --> src/tui/mod.rs:1317:8
[INFO] [stderr]      |
[INFO] [stderr]  120 | impl TuiApp {
[INFO] [stderr]      | ----------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 1317 |     fn get_selected_workflow(&self) -> Option<&crate::workflow::WorkflowMetadata> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/tui/preflight.rs:27:20
[INFO] [stderr]    |
[INFO] [stderr] 27 |     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stderr]    |     -------------- ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CheckAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 27 -     DownloadAssets(Vec<AssetDefinition>),
[INFO] [stderr] 27 +     DownloadAssets(()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/tui/preflight.rs:31:17
[INFO] [stderr]    |
[INFO] [stderr] 31 |     Instruction(String),
[INFO] [stderr]    |     ----------- ^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CheckAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 31 -     Instruction(String),
[INFO] [stderr] 31 +     Instruction(()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: variant `RunCommand` is never constructed
[INFO] [stderr]   --> src/tui/preflight.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub enum CheckAction {
[INFO] [stderr]    |          ----------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 29 |     RunCommand(String),
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CheckAction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `summary` is never used
[INFO] [stderr]   --> src/tui/preflight.rs:44:12
[INFO] [stderr]    |
[INFO] [stderr] 42 | impl PreflightStatus {
[INFO] [stderr]    | -------------------- method in this implementation
[INFO] [stderr] 43 |     /// Get a short summary string for display
[INFO] [stderr] 44 |     pub fn summary(&self) -> String {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `with_assets_dir`, `get_asset_status`, and `download_workflow_assets` are never used
[INFO] [stderr]    --> src/tui/preflight.rs:81:12
[INFO] [stderr]     |
[INFO] [stderr]  71 | impl PreflightChecker {
[INFO] [stderr]     | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  81 |     pub fn with_assets_dir<P: AsRef<Path>>(mut self, dir: P) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 309 |     pub fn get_asset_status(&self) -> anyhow::Result<AssetStatus> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 334 |     pub fn download_workflow_assets(&self, workflow: &WorkflowMetadata) -> anyhow::Result<Vec<PathBuf>> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `raps-demo-workflows` (lib) generated 8 warnings (run `cargo fix --lib -p raps-demo-workflows` to apply 2 suggestions)
[INFO] [stderr] warning: unused import: `manager::ConfigManager`
[INFO] [stderr]   --> src/config/mod.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use manager::ConfigManager;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AuthTokens`, `DemoConfig`, `Profile`, `RapsConfig`, and `ValidationResult`
[INFO] [stderr]   --> src/config/mod.rs:12:17
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub use types::{RapsConfig, DemoConfig, AuthTokens, Profile, ValidationResult};
[INFO] [stderr]    |                 ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `CleanupResult`, `ResourceType`, and `TrackedResource`
[INFO] [stderr]   --> src/resource/mod.rs:15:32
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub use types::{CleanupPolicy, CleanupResult, ResourceId, ResourceType, TrackedResource};
[INFO] [stderr]    |                                ^^^^^^^^^^^^^              ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Borders`
[INFO] [stderr]   --> src/tui/flowchart.rs:10:22
[INFO] [stderr]    |
[INFO] [stderr] 10 |     widgets::{Block, Borders, Paragraph, Widget, StatefulWidget},
[INFO] [stderr]    |                      ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `total_size_mb` is never used
[INFO] [stderr]    --> src/assets/mod.rs:199:12
[INFO] [stderr]     |
[INFO] [stderr]  93 | impl AssetRegistry {
[INFO] [stderr]     | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 199 |     pub fn total_size_mb(&self) -> f32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: methods `with_progress`, `download_category`, `download_all`, and `status` are never used
[INFO] [stderr]    --> src/assets/mod.rs:239:12
[INFO] [stderr]     |
[INFO] [stderr] 214 | impl AssetDownloader {
[INFO] [stderr]     | -------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 239 |     pub fn with_progress<F>(mut self, callback: F) -> Self
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 318 |     pub fn download_category(&self, category: AssetCategory) -> Result<Vec<PathBuf>> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 332 |     pub fn download_all(&self) -> Result<Vec<PathBuf>> {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 397 |     pub fn status(&self) -> AssetStatus {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AssetStatus` is never constructed
[INFO] [stderr]    --> src/assets/mod.rs:420:12
[INFO] [stderr]     |
[INFO] [stderr] 420 | pub struct AssetStatus {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_complete`, `missing_size_mb`, and `summary` are never used
[INFO] [stderr]    --> src/assets/mod.rs:428:12
[INFO] [stderr]     |
[INFO] [stderr] 426 | impl AssetStatus {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] 427 |     /// Check if all assets are downloaded
[INFO] [stderr] 428 |     pub fn is_complete(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 433 |     pub fn missing_size_mb(&self) -> f32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 438 |     pub fn summary(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_attribution` is never used
[INFO] [stderr]    --> src/assets/mod.rs:449:8
[INFO] [stderr]     |
[INFO] [stderr] 449 | pub fn print_attribution() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AuthValidator` is never constructed
[INFO] [stderr]   --> src/config/auth.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct AuthValidator {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `validate_credentials`, `validate_token`, and `check_connectivity` are never used
[INFO] [stderr]   --> src/config/auth.rs:22:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl AuthValidator {
[INFO] [stderr]    | ------------------ associated items in this implementation
[INFO] [stderr] 21 |     /// Create a new authentication validator
[INFO] [stderr] 22 |     pub fn new(base_url: String) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 27 |     pub async fn validate_credentials(&self, config: &RapsConfig) -> Result<ValidationResult> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 65 |     async fn validate_token(&self, tokens: &AuthTokens) -> Result<bool> {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 92 |     pub async fn check_connectivity(&self) -> Result<bool> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AuthSetupGuide` is never constructed
[INFO] [stderr]    --> src/config/auth.rs:112:12
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub struct AuthSetupGuide;
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `generate_setup_instructions` and `generate_troubleshooting_guide` are never used
[INFO] [stderr]    --> src/config/auth.rs:116:12
[INFO] [stderr]     |
[INFO] [stderr] 114 | impl AuthSetupGuide {
[INFO] [stderr]     | ------------------- associated functions in this implementation
[INFO] [stderr] 115 |     /// Generate setup instructions for missing credentials
[INFO] [stderr] 116 |     pub fn generate_setup_instructions(config: &RapsConfig) -> SetupInstructions {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 172 |     pub fn generate_troubleshooting_guide(validation_result: &ValidationResult) -> TroubleshootingGuide {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SetupInstructions` is never constructed
[INFO] [stderr]    --> src/config/auth.rs:230:12
[INFO] [stderr]     |
[INFO] [stderr] 230 | pub struct SetupInstructions {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add_step`, `required_steps`, and `optional_steps` are never used
[INFO] [stderr]    --> src/config/auth.rs:235:12
[INFO] [stderr]     |
[INFO] [stderr] 234 | impl SetupInstructions {
[INFO] [stderr]     | ---------------------- associated items in this implementation
[INFO] [stderr] 235 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 239 |     pub fn add_step(&mut self, step: SetupStep) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 243 |     pub fn required_steps(&self) -> Vec<&SetupStep> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 247 |     pub fn optional_steps(&self) -> Vec<&SetupStep> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SetupStep` is never constructed
[INFO] [stderr]    --> src/config/auth.rs:260:12
[INFO] [stderr]     |
[INFO] [stderr] 260 | pub struct SetupStep {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SetupAction` is never used
[INFO] [stderr]    --> src/config/auth.rs:270:10
[INFO] [stderr]     |
[INFO] [stderr] 270 | pub enum SetupAction {
[INFO] [stderr]     |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TroubleshootingGuide` is never constructed
[INFO] [stderr]    --> src/config/auth.rs:290:12
[INFO] [stderr]     |
[INFO] [stderr] 290 | pub struct TroubleshootingGuide {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add_solution`, and `is_empty` are never used
[INFO] [stderr]    --> src/config/auth.rs:295:12
[INFO] [stderr]     |
[INFO] [stderr] 294 | impl TroubleshootingGuide {
[INFO] [stderr]     | ------------------------- associated items in this implementation
[INFO] [stderr] 295 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 301 |     pub fn add_solution(&mut self, solution: TroubleshootingSolution) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 305 |     pub fn is_empty(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TroubleshootingSolution` is never constructed
[INFO] [stderr]    --> src/config/auth.rs:318:12
[INFO] [stderr]     |
[INFO] [stderr] 318 | pub struct TroubleshootingSolution {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TokenRefreshResponse` is never constructed
[INFO] [stderr]    --> src/config/auth.rs:327:8
[INFO] [stderr]     |
[INFO] [stderr] 327 | struct TokenRefreshResponse {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TokenRefresher` is never constructed
[INFO] [stderr]    --> src/config/auth.rs:338:12
[INFO] [stderr]     |
[INFO] [stderr] 338 | pub struct TokenRefresher;
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `refresh_token` is never used
[INFO] [stderr]    --> src/config/auth.rs:342:18
[INFO] [stderr]     |
[INFO] [stderr] 340 | impl TokenRefresher {
[INFO] [stderr]     | ------------------- associated function in this implementation
[INFO] [stderr] 341 |     /// Attempt to refresh an access token using the refresh token
[INFO] [stderr] 342 |     pub async fn refresh_token(config: &RapsConfig) -> Result<Option<AuthTokens>> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ConfigManager` is never constructed
[INFO] [stderr]   --> src/config/manager.rs:19:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct ConfigManager {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/config/manager.rs:34:18
[INFO] [stderr]     |
[INFO] [stderr]  32 | impl ConfigManager {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr]  33 |     /// Create a new configuration manager
[INFO] [stderr]  34 |     pub async fn new() -> Result<Self> {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr]  63 |     fn determine_config_dir() -> Result<PathBuf> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  74 |     async fn load_configuration(&mut self) -> Result<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  99 |     fn load_from_environment(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 147 |     async fn load_raps_config(&mut self) -> Result<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 186 |     async fn load_demo_config(&mut self) -> Result<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 208 |     async fn load_profiles(&mut self) -> Result<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 233 |     async fn load_profile(&mut self, path: &PathBuf) -> Result<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 244 |     fn apply_profile(&mut self, profile_name: &str) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 272 |     pub fn raps_config(&self) -> &RapsConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 277 |     pub fn demo_config(&self) -> &DemoConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 282 |     pub fn profiles(&self) -> &HashMap<String, Profile> {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 287 |     pub fn current_profile(&self) -> Option<&str> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 292 |     pub fn switch_profile(&mut self, profile_name: &str) -> Result<()> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 310 |     pub fn validate(&self) -> ValidationResult {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 342 |     pub fn is_ready(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 347 |     pub async fn save(&self) -> Result<()> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 371 |     pub async fn create_profile(&mut self, name: String, description: Option<String>) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 395 |     pub async fn validate_and_refresh_auth(&mut self) -> Result<ValidationResult> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 426 |     pub fn get_setup_instructions(&self) -> SetupInstructions {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 431 |     pub fn get_troubleshooting_guide(&self, validation_result: &ValidationResult) -> TroubleshootingGuide {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 436 |     pub async fn check_aps_connectivity(&self) -> Result<bool> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 441 |     pub async fn validate_auth_only(&self) -> Result<ValidationResult> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 446 |     pub fn update_auth_tokens(&mut self, tokens: AuthTokens) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 452 |     pub fn clear_auth_tokens(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 458 |     pub fn is_auth_healthy(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 467 |     pub async fn delete_profile(&mut self, name: &str) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `LogLevelParse` is never used
[INFO] [stderr]    --> src/config/manager.rs:492:7
[INFO] [stderr]     |
[INFO] [stderr] 492 | trait LogLevelParse {
[INFO] [stderr]     |       ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `LogLevel` is never used
[INFO] [stderr]   --> src/config/types.rs:16:10
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub enum LogLevel {
[INFO] [stderr]    |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DemoConfig` is never constructed
[INFO] [stderr]   --> src/config/types.rs:44:12
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub struct DemoConfig {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AuthTokens` is never constructed
[INFO] [stderr]   --> src/config/types.rs:80:12
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub struct AuthTokens {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_expired`, `expires_within`, and `has_scope` are never used
[INFO] [stderr]    --> src/config/types.rs:93:12
[INFO] [stderr]     |
[INFO] [stderr]  91 | impl AuthTokens {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr]  92 |     /// Check if the access token is expired
[INFO] [stderr]  93 |     pub fn is_expired(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  98 |     pub fn expires_within(&self, seconds: i64) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 103 |     pub fn has_scope(&self, scope: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RapsConfig` is never constructed
[INFO] [stderr]    --> src/config/types.rs:110:12
[INFO] [stderr]     |
[INFO] [stderr] 110 | pub struct RapsConfig {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `has_credentials`, `is_authenticated`, and `get_access_token` are never used
[INFO] [stderr]    --> src/config/types.rs:143:12
[INFO] [stderr]     |
[INFO] [stderr] 141 | impl RapsConfig {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] 142 |     /// Check if the configuration has valid credentials
[INFO] [stderr] 143 |     pub fn has_credentials(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 148 |     pub fn is_authenticated(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 156 |     pub fn get_access_token(&self) -> Option<&str> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Profile` is never constructed
[INFO] [stderr]    --> src/config/types.rs:166:12
[INFO] [stderr]     |
[INFO] [stderr] 166 | pub struct Profile {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `mark_used`, and `is_ready` are never used
[INFO] [stderr]    --> src/config/types.rs:183:12
[INFO] [stderr]     |
[INFO] [stderr] 181 | impl Profile {
[INFO] [stderr]     | ------------ associated items in this implementation
[INFO] [stderr] 182 |     /// Create a new profile
[INFO] [stderr] 183 |     pub fn new(name: String, description: Option<String>) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 195 |     pub fn mark_used(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 200 |     pub fn is_ready(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ValidationResult` is never constructed
[INFO] [stderr]    --> src/config/types.rs:207:12
[INFO] [stderr]     |
[INFO] [stderr] 207 | pub struct ValidationResult {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add_error`, `add_warning`, and `has_issues` are never used
[INFO] [stderr]    --> src/config/types.rs:218:12
[INFO] [stderr]     |
[INFO] [stderr] 216 | impl ValidationResult {
[INFO] [stderr]     | --------------------- associated items in this implementation
[INFO] [stderr] 217 |     /// Create a new validation result
[INFO] [stderr] 218 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 227 |     pub fn add_error(&mut self, error: String) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 233 |     pub fn add_warning(&mut self, warning: String) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 238 |     pub fn has_issues(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `EnvVars` is never constructed
[INFO] [stderr]    --> src/config/types.rs:250:12
[INFO] [stderr]     |
[INFO] [stderr] 250 | pub struct EnvVars;
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated constants are never used
[INFO] [stderr]    --> src/config/types.rs:253:15
[INFO] [stderr]     |
[INFO] [stderr] 252 | impl EnvVars {
[INFO] [stderr]     | ------------ associated constants in this implementation
[INFO] [stderr] 253 |     pub const CLIENT_ID: &'static str = "APS_CLIENT_ID";
[INFO] [stderr]     |               ^^^^^^^^^
[INFO] [stderr] 254 |     pub const CLIENT_SECRET: &'static str = "APS_CLIENT_SECRET";
[INFO] [stderr]     |               ^^^^^^^^^^^^^
[INFO] [stderr] 255 |     pub const CALLBACK_URL: &'static str = "APS_CALLBACK_URL";
[INFO] [stderr]     |               ^^^^^^^^^^^^
[INFO] [stderr] 256 |     pub const ENVIRONMENT: &'static str = "APS_ENVIRONMENT";
[INFO] [stderr]     |               ^^^^^^^^^^^
[INFO] [stderr] 257 |     pub const BASE_URL: &'static str = "APS_BASE_URL";
[INFO] [stderr]     |               ^^^^^^^^
[INFO] [stderr] 258 |     pub const ACCESS_TOKEN: &'static str = "APS_ACCESS_TOKEN";
[INFO] [stderr]     |               ^^^^^^^^^^^^
[INFO] [stderr] 259 |     pub const PROFILE: &'static str = "RAPS_PROFILE";
[INFO] [stderr]     |               ^^^^^^^
[INFO] [stderr] 260 |     pub const CONFIG_DIR: &'static str = "RAPS_CONFIG_DIR";
[INFO] [stderr]     |               ^^^^^^^^^^
[INFO] [stderr] 261 |     pub const LOG_LEVEL: &'static str = "RAPS_LOG_LEVEL";
[INFO] [stderr]     |               ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ConfigPaths` is never constructed
[INFO] [stderr]    --> src/config/types.rs:265:12
[INFO] [stderr]     |
[INFO] [stderr] 265 | pub struct ConfigPaths;
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/config/types.rs:269:15
[INFO] [stderr]     |
[INFO] [stderr] 267 | impl ConfigPaths {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr] 268 |     /// Default RAPS configuration directory name
[INFO] [stderr] 269 |     pub const CONFIG_DIR_NAME: &'static str = ".raps";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 272 |     pub const RAPS_CONFIG_FILE: &'static str = "config.toml";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 275 |     pub const DEMO_CONFIG_FILE: &'static str = "demo.toml";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 278 |     pub const PROFILES_DIR: &'static str = "profiles";
[INFO] [stderr]     |               ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 281 |     pub const CREDENTIALS_FILE: &'static str = "credentials.toml";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 284 |     pub fn default_config_dir() -> Result<PathBuf> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 291 |     pub fn raps_config_file() -> Result<PathBuf> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 296 |     pub fn demo_config_file() -> Result<PathBuf> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 301 |     pub fn profiles_dir() -> Result<PathBuf> {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 306 |     pub fn credentials_file() -> Result<PathBuf> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DemoManager` is never constructed
[INFO] [stderr]   --> src/demo/mod.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct DemoManager {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]   --> src/demo/mod.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 24 | impl DemoManager {
[INFO] [stderr]    | ---------------- associated items in this implementation
[INFO] [stderr] 25 |     /// Create a new demo manager instance
[INFO] [stderr] 26 |     pub fn new() -> Result<Self> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn with_workflows_dir<P: Into<PathBuf>>(path: P) -> Result<Self> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 50 |     pub fn initialize(&mut self) -> Result<()> {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 69 |     pub fn get_workflows(&self) -> &[WorkflowMetadata] {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 74 |     pub fn get_workflow(&self, id: &WorkflowId) -> Option<&WorkflowDefinition> {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 79 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 89 |     pub fn get_workflows_by_category(&self) -> HashMap<String, Vec<&WorkflowMetadata>> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ResourceManager` is never constructed
[INFO] [stderr]   --> src/resource/mod.rs:18:12
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub struct ResourceManager {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `with_state_file`, `default_state_file`, `tracker`, and `tracker_mut` are never used
[INFO] [stderr]   --> src/resource/mod.rs:24:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | impl ResourceManager {
[INFO] [stderr]    | -------------------- associated items in this implementation
[INFO] [stderr] 23 |     /// Create a new resource manager instance
[INFO] [stderr] 24 |     pub fn new() -> Result<Self> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 35 |     pub fn with_state_file<P: Into<PathBuf>>(state_file: P) -> Result<Self> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 41 |     fn default_state_file() -> Result<PathBuf> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 52 |     pub fn tracker(&self) -> &FileBasedResourceTracker {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub fn tracker_mut(&mut self) -> &mut FileBasedResourceTracker {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `CleanupMode` is never used
[INFO] [stderr]   --> src/resource/cleanup.rs:21:10
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub enum CleanupMode {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `CleanupStrategy` is never used
[INFO] [stderr]   --> src/resource/cleanup.rs:34:10
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub enum CleanupStrategy {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InterruptedWorkflowCleanup` is never constructed
[INFO] [stderr]   --> src/resource/cleanup.rs:47:12
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub struct InterruptedWorkflowCleanup {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CleanupOrchestrationResult` is never constructed
[INFO] [stderr]   --> src/resource/cleanup.rs:62:12
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub struct CleanupOrchestrationResult {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CleanupOrchestrator` is never constructed
[INFO] [stderr]   --> src/resource/cleanup.rs:79:12
[INFO] [stderr]    |
[INFO] [stderr] 79 | pub struct CleanupOrchestrator<T: ResourceTracker + CostEstimator> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/resource/cleanup.rs:92:12
[INFO] [stderr]     |
[INFO] [stderr]  90 | impl<T: ResourceTracker + CostEstimator + Send + Sync> CleanupOrchestrator<T> {
[INFO] [stderr]     | ----------------------------------------------------------------------------- associated items in this implementation
[INFO] [stderr]  91 |     /// Create a new cleanup orchestrator
[INFO] [stderr]  92 |     pub fn new(tracker: Arc<RwLock<T>>) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     fn create_default_policies() -> HashMap<String, CleanupPolicy> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 125 |     pub fn set_workflow_strategy(&mut self, workflow_id: WorkflowId, strategy: CleanupStrategy) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 130 |     pub fn get_workflow_strategy(&self, workflow_id: &WorkflowId) -> CleanupStrategy {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 138 |     pub async fn cleanup_completed_workflow(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 164 |     async fn execute_immediate_cleanup(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 188 |     async fn generate_manual_cleanup_instructions(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 259 |     async fn execute_interactive_cleanup(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 306 |     async fn execute_dry_run_cleanup(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 356 |     async fn schedule_cleanup(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 390 |     async fn execute_age_based_cleanup(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 427 |     async fn execute_cost_based_cleanup(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 483 |     pub async fn handle_interrupted_workflow(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 527 |     pub fn get_interrupted_workflows(&self) -> Vec<&InterruptedWorkflowCleanup> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 532 |     pub fn clear_interrupted_workflow(&mut self, workflow_id: &WorkflowId) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 537 |     fn get_resource_policy(&self, resource_type: &ResourceType) -> CleanupPolicy {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 546 |     pub async fn orchestrate_cleanup(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `ResourceTypeExt` is never used
[INFO] [stderr]    --> src/resource/cleanup.rs:608:7
[INFO] [stderr]     |
[INFO] [stderr] 608 | trait ResourceTypeExt {
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `TrackedResourceExt` is never used
[INFO] [stderr]    --> src/resource/cleanup.rs:628:7
[INFO] [stderr]     |
[INFO] [stderr] 628 | trait TrackedResourceExt {
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `ResourceTracker` is never used
[INFO] [stderr]   --> src/resource/tracker.rs:21:11
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub trait ResourceTracker {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `CostEstimator` is never used
[INFO] [stderr]   --> src/resource/tracker.rs:45:11
[INFO] [stderr]    |
[INFO] [stderr] 45 | pub trait CostEstimator {
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `FileBasedResourceTracker` is never constructed
[INFO] [stderr]   --> src/resource/tracker.rs:61:12
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub struct FileBasedResourceTracker {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TrackerState` is never constructed
[INFO] [stderr]   --> src/resource/tracker.rs:76:8
[INFO] [stderr]    |
[INFO] [stderr] 76 | struct TrackerState {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `default_cleanup_policies`, `apply_demo_naming`, `get_cleanup_policy`, `should_cleanup_resource`, and `generate_cleanup_commands` are never used
[INFO] [stderr]    --> src/resource/tracker.rs:86:12
[INFO] [stderr]     |
[INFO] [stderr]  84 | impl FileBasedResourceTracker {
[INFO] [stderr]     | ----------------------------- associated items in this implementation
[INFO] [stderr]  85 |     /// Create a new resource tracker with the specified state file
[INFO] [stderr]  86 |     pub fn new<P: AsRef<Path>>(state_file: P) -> Result<Self> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 113 |     fn default_cleanup_policies() -> HashMap<String, CleanupPolicy> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 148 |     pub fn apply_demo_naming(&self, resource_type: &ResourceType, base_name: &str) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 190 |     pub fn get_cleanup_policy(&self, resource_type: &ResourceType) -> CleanupPolicy {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 209 |     pub fn should_cleanup_resource(&self, resource: &TrackedResource) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 221 |     fn generate_cleanup_commands(&self, resource: &TrackedResource) -> Vec<RapsCommand> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ResourceType` is never used
[INFO] [stderr]   --> src/resource/types.rs:20:10
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub enum ResourceType {
[INFO] [stderr]    |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TrackedResource` is never constructed
[INFO] [stderr]   --> src/resource/types.rs:63:12
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub struct TrackedResource {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `has_demo_naming`, `age`, `add_tag`, and `estimated_monthly_cost` are never used
[INFO] [stderr]    --> src/resource/types.rs:86:12
[INFO] [stderr]     |
[INFO] [stderr]  84 | impl TrackedResource {
[INFO] [stderr]     | -------------------- associated items in this implementation
[INFO] [stderr]  85 |     /// Create a new tracked resource
[INFO] [stderr]  86 |     pub fn new(
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub fn has_demo_naming(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 112 |     pub fn age(&self) -> Duration {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 117 |     pub fn add_tag(&mut self, key: String, value: String) {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 122 |     pub fn estimated_monthly_cost(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `CleanupPolicy` is never used
[INFO] [stderr]    --> src/resource/types.rs:144:10
[INFO] [stderr]     |
[INFO] [stderr] 144 | pub enum CleanupPolicy {
[INFO] [stderr]     |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CleanupResult` is never constructed
[INFO] [stderr]    --> src/resource/types.rs:163:12
[INFO] [stderr]     |
[INFO] [stderr] 163 | pub struct CleanupResult {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CostSummary` is never constructed
[INFO] [stderr]    --> src/resource/types.rs:177:12
[INFO] [stderr]     |
[INFO] [stderr] 177 | pub struct CostSummary {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add_resource`, and `exceeds_threshold` are never used
[INFO] [stderr]    --> src/resource/types.rs:192:12
[INFO] [stderr]     |
[INFO] [stderr] 190 | impl CostSummary {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr] 191 |     /// Create a new cost summary
[INFO] [stderr] 192 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 203 |     pub fn add_resource(&mut self, resource: &TrackedResource) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 224 |     pub fn exceeds_threshold(&self, threshold: f64) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ResourceNaming` is never constructed
[INFO] [stderr]    --> src/resource/types.rs:236:12
[INFO] [stderr]     |
[INFO] [stderr] 236 | pub struct ResourceNaming;
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `demo_bucket_name`, `demo_object_key`, `demo_folder_name`, `demo_photoscene_name`, and `is_demo_name` are never used
[INFO] [stderr]    --> src/resource/types.rs:240:12
[INFO] [stderr]     |
[INFO] [stderr] 238 | impl ResourceNaming {
[INFO] [stderr]     | ------------------- associated functions in this implementation
[INFO] [stderr] 239 |     /// Generate a demo bucket name
[INFO] [stderr] 240 |     pub fn demo_bucket_name() -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 246 |     pub fn demo_object_key(original_name: &str) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 252 |     pub fn demo_folder_name(base_name: &str) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 258 |     pub fn demo_photoscene_name() -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 264 |     pub fn is_demo_name(name: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_selected_workflow` is never used
[INFO] [stderr]     --> src/tui/mod.rs:1317:8
[INFO] [stderr]      |
[INFO] [stderr]  120 | impl TuiApp {
[INFO] [stderr]      | ----------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 1317 |     fn get_selected_workflow(&self) -> Option<&crate::workflow::WorkflowMetadata> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `serialize_duration` is never used
[INFO] [stderr]  --> src/utils/serde_helpers.rs:9:8
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub fn serialize_duration<S>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error>
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `deserialize_duration` is never used
[INFO] [stderr]   --> src/utils/serde_helpers.rs:17:8
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub fn deserialize_duration<'de, D>(deserializer: D) -> Result<Duration, D::Error>
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WorkflowEngine` is never constructed
[INFO] [stderr]   --> src/workflow/mod.rs:21:12
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub struct WorkflowEngine {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]   --> src/workflow/mod.rs:32:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl WorkflowEngine {
[INFO] [stderr]    | ------------------- associated items in this implementation
[INFO] [stderr] 31 |     /// Create a new workflow engine instance
[INFO] [stderr] 32 |     pub fn new<P: AsRef<std::path::Path>>(workflows_dir: P) -> Result<Self> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 46 |     pub fn get_workflows(&self) -> &std::collections::HashMap<WorkflowId, WorkflowDefinition> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 51 |     pub fn get_workflow(&self, id: &WorkflowId) -> Option<&WorkflowDefinition> {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 56 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 61 |     pub async fn execute(&self, workflow_id: &WorkflowId, options: ExecutionOptions) -> Result<ExecutionHandle> {
[INFO] [stderr]    |                  ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 70 |     pub fn executor(&self) -> &Arc<WorkflowExecutor> {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 75 |     pub fn take_update_receiver(&mut self) -> Option<mpsc::UnboundedReceiver<ExecutionUpdate>> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `duration` is never read
[INFO] [stderr]   --> src/workflow/client.rs:51:9
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub struct CommandResult {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 51 |     pub duration: Duration,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CommandResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `current_operation`, `progress_percent`, `estimated_remaining`, and `status_info` are never read
[INFO] [stderr]    --> src/workflow/client.rs:102:9
[INFO] [stderr]     |
[INFO] [stderr] 100 | pub struct CommandProgress {
[INFO] [stderr]     |            --------------- fields in this struct
[INFO] [stderr] 101 |     /// Current step or operation being performed
[INFO] [stderr] 102 |     pub current_operation: String,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 103 |     /// Progress percentage (0.0 to 1.0)
[INFO] [stderr] 104 |     pub progress_percent: f32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 105 |     /// Estimated time remaining
[INFO] [stderr] 106 |     pub estimated_remaining: Option<Duration>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 107 |     /// Additional status information
[INFO] [stderr] 108 |     pub status_info: HashMap<String, String>,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `CommandProgress` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `progress_callback` is never read
[INFO] [stderr]    --> src/workflow/client.rs:116:5
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub struct RapsClient {
[INFO] [stderr]     |            ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 116 |     progress_callback: Option<Box<dyn Fn(CommandProgress) + Send + Sync>>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `with_config`, `with_progress_callback`, `execute_with_progress`, `execute_translation_with_progress`, and `config` are never used
[INFO] [stderr]    --> src/workflow/client.rs:129:12
[INFO] [stderr]     |
[INFO] [stderr] 119 | impl RapsClient {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 129 |     pub fn with_config(config: RapsClientConfig) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 137 |     pub fn with_progress_callback<F>(mut self, callback: F) -> Self
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     pub async fn execute_with_progress(&self, command: &RapsCommand) -> Result<CommandResult> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 486 |     async fn execute_translation_with_progress(&self, command: &RapsCommand) -> Result<CommandResult> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 536 |     pub fn config(&self) -> &RapsClientConfig {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ValidationResult` is never constructed
[INFO] [stderr]   --> src/workflow/discovery.rs:32:12
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub struct ValidationResult {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `success`, `with_errors`, and `with_warning` are never used
[INFO] [stderr]   --> src/workflow/discovery.rs:43:12
[INFO] [stderr]    |
[INFO] [stderr] 41 | impl ValidationResult {
[INFO] [stderr]    | --------------------- associated items in this implementation
[INFO] [stderr] 42 |     /// Create a successful validation result
[INFO] [stderr] 43 |     pub fn success() -> Self {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 52 |     pub fn with_errors(errors: Vec<String>) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 61 |     pub fn with_warning(mut self, warning: String) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `validate_workflow`, `validate_command`, `get_workflow_dependencies`, `resolve_dependencies_recursive`, `get_workflows_by_category`, and `refresh` are never used
[INFO] [stderr]    --> src/workflow/discovery.rs:159:12
[INFO] [stderr]     |
[INFO] [stderr]  77 | impl WorkflowDiscovery {
[INFO] [stderr]     | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 159 |     pub fn validate_workflow(&self, workflow_id: &WorkflowId) -> Result<ValidationResult> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 233 |     fn validate_command(&self, command: &RapsCommand) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 303 |     pub fn get_workflow_dependencies(&self, workflow_id: &WorkflowId) -> Result<Vec<WorkflowId>> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 313 |     fn resolve_dependencies_recursive(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 348 |     pub fn get_workflows_by_category(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 359 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `handle` is never read
[INFO] [stderr]   --> src/workflow/executor.rs:54:9
[INFO] [stderr]    |
[INFO] [stderr] 53 |     Started {
[INFO] [stderr]    |     ------- field in this variant
[INFO] [stderr] 54 |         handle: ExecutionHandle,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ExecutionUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `handle` is never read
[INFO] [stderr]   --> src/workflow/executor.rs:59:9
[INFO] [stderr]    |
[INFO] [stderr] 58 |     StepStarted {
[INFO] [stderr]    |     ----------- field in this variant
[INFO] [stderr] 59 |         handle: ExecutionHandle,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ExecutionUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `handle` is never read
[INFO] [stderr]   --> src/workflow/executor.rs:70:9
[INFO] [stderr]    |
[INFO] [stderr] 69 |     StepCompleted {
[INFO] [stderr]    |     ------------- field in this variant
[INFO] [stderr] 70 |         handle: ExecutionHandle,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ExecutionUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `handle` and `next_step` are never read
[INFO] [stderr]   --> src/workflow/executor.rs:75:9
[INFO] [stderr]    |
[INFO] [stderr] 74 |     Paused {
[INFO] [stderr]    |     ------ fields in this variant
[INFO] [stderr] 75 |         handle: ExecutionHandle,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] 76 |         next_step: ExecutionStep,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ExecutionUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `handle` is never read
[INFO] [stderr]   --> src/workflow/executor.rs:80:9
[INFO] [stderr]    |
[INFO] [stderr] 79 |     Completed {
[INFO] [stderr]    |     --------- field in this variant
[INFO] [stderr] 80 |         handle: ExecutionHandle,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ExecutionUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `handle` is never read
[INFO] [stderr]   --> src/workflow/executor.rs:85:9
[INFO] [stderr]    |
[INFO] [stderr] 84 |     Failed {
[INFO] [stderr]    |     ------ field in this variant
[INFO] [stderr] 85 |         handle: ExecutionHandle,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ExecutionUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `StepProgress` and `Cancelled` are never constructed
[INFO] [stderr]   --> src/workflow/executor.rs:63:5
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub enum ExecutionUpdate {
[INFO] [stderr]    |          --------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 63 |     StepProgress {
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 89 |     Cancelled { handle: ExecutionHandle },
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ExecutionUpdate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `failed_step`, `command_result`, and `is_recoverable` are never read
[INFO] [stderr]    --> src/workflow/executor.rs:98:9
[INFO] [stderr]     |
[INFO] [stderr]  94 | pub struct ExecutionError {
[INFO] [stderr]     |            -------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr]  98 |     pub failed_step: Option<StepId>,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr]  99 |     /// RAPS CLI command result (if applicable)
[INFO] [stderr] 100 |     pub command_result: Option<CommandResult>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 104 |     pub is_recoverable: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ExecutionError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `with_suggestion` and `recoverable` are never used
[INFO] [stderr]    --> src/workflow/executor.rs:137:12
[INFO] [stderr]     |
[INFO] [stderr] 107 | impl ExecutionError {
[INFO] [stderr]     | ------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 137 |     pub fn with_suggestion(mut self, suggestion: String) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 143 |     pub fn recoverable(mut self) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `with_config`, `get_execution_progress`, `cancel_execution`, `resume_execution`, and `estimate_remaining_time` are never used
[INFO] [stderr]    --> src/workflow/executor.rs:162:12
[INFO] [stderr]     |
[INFO] [stderr] 149 | impl WorkflowExecutor {
[INFO] [stderr]     | --------------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 162 |     pub fn with_config(config: RapsClientConfig) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 290 |     pub async fn get_execution_progress(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 332 |     pub async fn cancel_execution(&self, handle: &ExecutionHandle) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 347 |     pub async fn resume_execution(&self, handle: &ExecutionHandle) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 705 |     fn estimate_remaining_time(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `workflow_id`, `environment`, `temp_dir`, and `start_time` are never read
[INFO] [stderr]    --> src/workflow/types.rs:188:9
[INFO] [stderr]     |
[INFO] [stderr] 186 | pub struct ExecutionContext {
[INFO] [stderr]     |            ---------------- fields in this struct
[INFO] [stderr] 187 |     /// Workflow being executed
[INFO] [stderr] 188 |     pub workflow_id: WorkflowId,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 192 |     pub environment: HashMap<String, String>,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr] 193 |     /// Temporary directory for this execution
[INFO] [stderr] 194 |     pub temp_dir: PathBuf,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 195 |     /// Start time of execution
[INFO] [stderr] 196 |     pub start_time: DateTime<Utc>,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ExecutionContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ExecutionProgress` is never constructed
[INFO] [stderr]    --> src/workflow/types.rs:415:12
[INFO] [stderr]     |
[INFO] [stderr] 415 | pub struct ExecutionProgress {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `raps-demo-workflows` (bin "raps-demo") generated 96 warnings (6 duplicates) (run `cargo fix --bin "raps-demo" -p raps-demo-workflows` to apply 4 suggestions)
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/resource/cleanup.rs:731:14
[INFO] [stderr]     |
[INFO] [stderr] 731 |         let (mut orchestrator, _temp_dir) = create_test_orchestrator().await;
[INFO] [stderr]     |              ----^^^^^^^^^^^^
[INFO] [stderr]     |              |
[INFO] [stderr]     |              help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/workflow/discovery.rs:543:13
[INFO] [stderr]     |
[INFO] [stderr] 543 |         let mut discovery = WorkflowDiscovery::new(temp_dir.path()).unwrap();
[INFO] [stderr]     |             ----^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: method `check_connectivity` is never used
[INFO] [stderr]   --> src/config/auth.rs:92:18
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl AuthValidator {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 92 |     pub async fn check_connectivity(&self) -> Result<bool> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `auth_validator` is never read
[INFO] [stderr]   --> src/config/manager.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct ConfigManager {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 29 |     auth_validator: AuthValidator,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ConfigManager` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/config/manager.rs:272:12
[INFO] [stderr]     |
[INFO] [stderr]  32 | impl ConfigManager {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 272 |     pub fn raps_config(&self) -> &RapsConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 277 |     pub fn demo_config(&self) -> &DemoConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 282 |     pub fn profiles(&self) -> &HashMap<String, Profile> {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 310 |     pub fn validate(&self) -> ValidationResult {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 342 |     pub fn is_ready(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 347 |     pub async fn save(&self) -> Result<()> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 395 |     pub async fn validate_and_refresh_auth(&mut self) -> Result<ValidationResult> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 426 |     pub fn get_setup_instructions(&self) -> SetupInstructions {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 431 |     pub fn get_troubleshooting_guide(&self, validation_result: &ValidationResult) -> TroubleshootingGuide {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 436 |     pub async fn check_aps_connectivity(&self) -> Result<bool> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 441 |     pub async fn validate_auth_only(&self) -> Result<ValidationResult> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 446 |     pub fn update_auth_tokens(&mut self, tokens: AuthTokens) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 452 |     pub fn clear_auth_tokens(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 458 |     pub fn is_auth_healthy(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 467 |     pub async fn delete_profile(&mut self, name: &str) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_interrupted_workflows` and `clear_interrupted_workflow` are never used
[INFO] [stderr]    --> src/resource/cleanup.rs:527:12
[INFO] [stderr]     |
[INFO] [stderr]  90 | impl<T: ResourceTracker + CostEstimator + Send + Sync> CleanupOrchestrator<T> {
[INFO] [stderr]     | ----------------------------------------------------------------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 527 |     pub fn get_interrupted_workflows(&self) -> Vec<&InterruptedWorkflowCleanup> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 532 |     pub fn clear_interrupted_workflow(&mut self, workflow_id: &WorkflowId) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `track_actual_cost` and `exceeds_cost_threshold` are never used
[INFO] [stderr]   --> src/resource/tracker.rs:50:8
[INFO] [stderr]    |
[INFO] [stderr] 45 | pub trait CostEstimator {
[INFO] [stderr]    |           ------------- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 50 |     fn track_actual_cost(&mut self, resource_id: &ResourceId, actual_cost: f64);
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 56 |     fn exceeds_cost_threshold(&self, workflow_id: &WorkflowId, threshold: f64) -> Result<bool>;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `add_tag` is never used
[INFO] [stderr]    --> src/resource/types.rs:117:12
[INFO] [stderr]     |
[INFO] [stderr]  84 | impl TrackedResource {
[INFO] [stderr]     | -------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 117 |     pub fn add_tag(&mut self, key: String, value: String) {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `exceeds_threshold` is never used
[INFO] [stderr]    --> src/resource/types.rs:224:12
[INFO] [stderr]     |
[INFO] [stderr] 190 | impl CostSummary {
[INFO] [stderr]     | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 224 |     pub fn exceeds_threshold(&self, threshold: f64) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_workflows_by_category` and `refresh` are never used
[INFO] [stderr]    --> src/workflow/discovery.rs:348:12
[INFO] [stderr]     |
[INFO] [stderr]  77 | impl WorkflowDiscovery {
[INFO] [stderr]     | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 348 |     pub fn get_workflows_by_category(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 359 |     pub fn refresh(&mut self) -> Result<Vec<WorkflowMetadata>> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `raps-demo-workflows` (lib test) generated 10 warnings (8 duplicates) (run `cargo fix --lib -p raps-demo-workflows --tests` to apply 2 suggestions)
[INFO] [stderr] warning: `raps-demo-workflows` (bin "raps-demo" test) generated 53 warnings (45 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.28s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/raps_demo_workflows-b789c88cf176eba0)
[INFO] [stdout] 
[INFO] [stdout] running 51 tests
[INFO] [stdout] test config::auth::tests::test_setup_instructions_generation ... ok
[INFO] [stdout] test config::auth::tests::test_setup_instructions_filtering ... ok
[INFO] [stdout] test assets::tests::test_asset_filename ... ok
[INFO] [stdout] test assets::tests::test_asset_registry ... ok
[INFO] [stdout] test config::auth::tests::test_troubleshooting_guide_generation ... ok
[INFO] [stdout] test config::auth::tests::test_validate_credentials_missing ... ok
[INFO] [stdout] test config::types::tests::test_auth_tokens_scopes ... ok
[INFO] [stdout] test config::types::tests::test_log_level_display ... ok
[INFO] [stdout] test config::types::tests::test_auth_tokens_expiration ... ok
[INFO] [stdout] test config::manager::tests::test_log_level_parsing ... ok
[INFO] [stdout] test config::types::tests::test_profile_creation ... ok
[INFO] [stdout] test config::types::tests::test_raps_config_validation ... ok
[INFO] [stdout] test config::types::tests::test_config_paths ... ok
[INFO] [stdout] test resource::tracker::tests::test_demo_naming_application ... ok
[INFO] [stdout] test config::types::tests::test_demo_config_default ... ok
[INFO] [stdout] test config::manager::tests::test_environment_variable_loading ... ok
[INFO] [stdout] test resource::tracker::tests::test_cleanup_policy_application ... ok
[INFO] [stdout] test resource::tracker::tests::test_cost_estimation ... ok
[INFO] [stdout] test resource::cleanup::tests::test_cleanup_strategy_immediate ... ok
[INFO] [stdout] test resource::cleanup::tests::test_cost_based_cleanup ... ok
[INFO] [stdout] test config::types::tests::test_validation_result ... ok
[INFO] [stdout] test resource::tracker::tests::test_state_persistence ... ok
[INFO] [stdout] test resource::cleanup::tests::test_cleanup_mode_dry_run ... ok
[INFO] [stdout] test resource::types::tests::test_cost_estimation ... ok
[INFO] [stdout] test resource::types::tests::test_demo_naming_conventions ... ok
[INFO] [stdout] test resource::types::tests::test_cost_summary ... ok
[INFO] [stdout] test resource::cleanup::tests::test_interrupted_workflow_handling ... ok
[INFO] [stdout] test resource::tracker::tests::test_track_and_untrack_resource ... ok
[INFO] [stdout] test config::manager::tests::test_profile_management ... ok
[INFO] [stdout] test config::manager::tests::test_config_manager_creation ... ok
[INFO] [stdout] test config::auth::tests::test_auth_validator_creation ... ok
[INFO] [stdout] test workflow::client::tests::test_build_custom_command_args ... ok
[INFO] [stdout] test workflow::client::tests::test_command_result_error ... ok
[INFO] [stdout] test workflow::client::tests::test_build_object_upload_command_args ... ok
[INFO] [stdout] test resource::tracker::tests::test_workflow_resource_grouping ... ok
[INFO] [stdout] test resource::cleanup::tests::test_orchestration_multiple_workflows ... ok
[INFO] [stdout] test workflow::client::tests::test_build_auth_command_args ... ok
[INFO] [stdout] test utils::serde_helpers::tests::test_optional_duration_none ... ok
[INFO] [stdout] test workflow::client::tests::test_build_bucket_create_command_args ... ok
[INFO] [stdout] test tui::preflight::tests::test_preflight_checker_creation ... ok
[INFO] [stdout] test workflow::client::tests::test_build_translate_command_args ... ok
[INFO] [stdout] test utils::serde_helpers::tests::test_duration_serialization ... ok
[INFO] [stdout] test resource::types::tests::test_tracked_resource_creation ... ok
[INFO] [stdout] test workflow::client::tests::test_raps_client_config_default ... ok
[INFO] [stdout] test resource::types::tests::test_cleanup_policy_default ... ok
[INFO] [stdout] test workflow::client::tests::test_command_result_creation ... ok
[INFO] [stdout] test workflow::discovery::tests::test_workflow_definition_parsing ... FAILED
[INFO] [stdout] test workflow::discovery::tests::test_workflow_discovery ... FAILED
[INFO] [stdout] test workflow::discovery::tests::test_invalid_workflow_validation ... FAILED
[INFO] [stdout] test workflow::discovery::tests::test_dependency_resolution ... FAILED
[INFO] [stdout] test workflow::discovery::tests::test_workflow_validation ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- workflow::discovery::tests::test_workflow_definition_parsing stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'workflow::discovery::tests::test_workflow_definition_parsing' (75) panicked at src/workflow/discovery.rs:409:82:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Error("metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end`", line: 6, column: 13)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567c7b8833d2 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567c7b89b54a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567c7b89b54a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x567c7b888b76 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567c7b888b76 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567c7b85e97f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567c7b85e97f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567c7b87a459 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567c7b6fd3ae - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x567c7b6fd3ae - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567c7b87a6c2 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x567c7b87a6c2 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567c7b85ea38 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x567c7b855b09 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567c7b85fb3d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567c7b89bc8c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567c7b89ba02 - core[c5ed12ab89cc536a]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x567c7b5084d6 - <core[c5ed12ab89cc536a]::result::Result<raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::WorkflowDefinition, serde_yaml[9a99c0640d25be2f]::error::Error>>::unwrap
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/result.rs:1233:23
[INFO] [stdout]   21:     0x567c7b5084d6 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_definition_parsing
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:409:82
[INFO] [stdout]   22:     0x567c7b4fb757 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_definition_parsing::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:407:42
[INFO] [stdout]   23:     0x567c7b455206 - <raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_definition_parsing::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567c7b6f175b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x567c7b6f175b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x567c7b6fdfba - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x567c7b6f8484 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x567c7b6f8484 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x567c7b700ab2 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x567c7b700ab2 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x567c7b8826ff - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x567c7b8826ff - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x765e69e01aa4 - <unknown>
[INFO] [stdout]   45:     0x765e69e8ea64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- workflow::discovery::tests::test_workflow_discovery stdout ----
[INFO] [stdout] ERROR loading workflow /tmp/.tmp8KYnyw/test-workflow.yaml: Failed to parse workflow YAML: /tmp/.tmp8KYnyw/test-workflow.yaml
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end` at line 6 column 13
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <serde_yaml::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error> as anyhow::Context<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error>>::with_context::<alloc::string::String, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition<&std::path::Path>::{closure#1}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/context.rs:65:37
[INFO] [stdout]    2: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:153:14
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::discover_workflows
[INFO] [stdout]              at ./src/workflow/discovery.rs:120:28
[INFO] [stdout]    4: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::new::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:95:19
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_workflow_discovery
[INFO] [stdout]              at ./src/workflow/discovery.rs:428:29
[INFO] [stdout]    6: raps_demo_workflows::workflow::discovery::tests::test_workflow_discovery::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:422:33
[INFO] [stdout]    7: <raps_demo_workflows::workflow::discovery::tests::test_workflow_discovery::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    9: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   10: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   11: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   12: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   13: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   14: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   15: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   16: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   17: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   18: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   19: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   20: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   21: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   22: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   23: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   24: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   25: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   27: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   28: <unknown>
[INFO] [stdout]   29: clone
[INFO] [stdout] ERROR loading workflow /tmp/.tmp8KYnyw/test-workflow.yaml: Failed to parse workflow YAML: /tmp/.tmp8KYnyw/test-workflow.yaml
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end` at line 6 column 13
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <serde_yaml::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error> as anyhow::Context<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error>>::with_context::<alloc::string::String, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition<&std::path::Path>::{closure#1}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/context.rs:65:37
[INFO] [stdout]    2: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:153:14
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::discover_workflows
[INFO] [stdout]              at ./src/workflow/discovery.rs:120:28
[INFO] [stdout]    4: raps_demo_workflows::workflow::discovery::tests::test_workflow_discovery
[INFO] [stdout]              at ./src/workflow/discovery.rs:429:39
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_workflow_discovery::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:422:33
[INFO] [stdout]    6: <raps_demo_workflows::workflow::discovery::tests::test_workflow_discovery::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] thread 'workflow::discovery::tests::test_workflow_discovery' (76) panicked at src/workflow/discovery.rs:432:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: 0
[INFO] [stdout]  right: 1
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567c7b8833d2 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567c7b89b54a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567c7b89b54a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x567c7b888b76 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567c7b888b76 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567c7b85e97f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567c7b85e97f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567c7b87a459 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567c7b6fd3ae - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x567c7b6fd3ae - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567c7b87a6c2 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x567c7b87a6c2 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567c7b85ea38 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x567c7b855b09 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567c7b85fb3d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567c7b89bc8c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567c7b89bb43 - core[c5ed12ab89cc536a]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x567c7b89669d - core[c5ed12ab89cc536a]::panicking::assert_failed::<usize, usize>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x567c7b506ba4 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_discovery
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:432:9
[INFO] [stdout]   22:     0x567c7b4fb697 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_discovery::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:422:33
[INFO] [stdout]   23:     0x567c7b455106 - <raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_discovery::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567c7b6f175b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x567c7b6f175b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x567c7b6fdfba - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x567c7b6f8484 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x567c7b6f8484 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x567c7b700ab2 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x567c7b700ab2 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x567c7b8826ff - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x567c7b8826ff - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x765e69e01aa4 - <unknown>
[INFO] [stdout]   45:     0x765e69e8ea64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- workflow::discovery::tests::test_invalid_workflow_validation stdout ----
[INFO] [stdout] ERROR loading workflow /tmp/.tmpxKfkfH/invalid-workflow.yaml: Failed to parse workflow YAML: /tmp/.tmpxKfkfH/invalid-workflow.yaml
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end` at line 6 column 13
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <serde_yaml::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error> as anyhow::Context<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error>>::with_context::<alloc::string::String, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition<&std::path::Path>::{closure#1}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/context.rs:65:37
[INFO] [stdout]    2: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:153:14
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::discover_workflows
[INFO] [stdout]              at ./src/workflow/discovery.rs:120:28
[INFO] [stdout]    4: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::new::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:95:19
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation
[INFO] [stdout]              at ./src/workflow/discovery.rs:475:29
[INFO] [stdout]    6: raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:455:42
[INFO] [stdout]    7: <raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    9: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   10: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   11: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   12: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   13: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   14: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   15: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   16: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   17: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   18: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   19: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   20: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   21: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   22: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   23: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   24: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   25: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   27: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   28: <unknown>
[INFO] [stdout]   29: clone
[INFO] [stdout] ERROR loading workflow /tmp/.tmpxKfkfH/invalid-workflow.yaml: Failed to parse workflow YAML: /tmp/.tmpxKfkfH/invalid-workflow.yaml
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end` at line 6 column 13
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <serde_yaml::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error> as anyhow::Context<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error>>::with_context::<alloc::string::String, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition<&std::path::Path>::{closure#1}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/context.rs:65:37
[INFO] [stdout]    2: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:153:14
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::discover_workflows
[INFO] [stdout]              at ./src/workflow/discovery.rs:120:28
[INFO] [stdout]    4: raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation
[INFO] [stdout]              at ./src/workflow/discovery.rs:476:19
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:455:42
[INFO] [stdout]    6: <raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] thread 'workflow::discovery::tests::test_invalid_workflow_validation' (74) panicked at src/workflow/discovery.rs:479:14:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Workflow not found: invalid-workflow
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::validate_workflow::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:163:28
[INFO] [stdout]    2: <core::option::Option<&raps_demo_workflows::workflow::discovery::WorkflowDefinition>>::ok_or_else::<anyhow::Error, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::validate_workflow::{closure#0}>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/option.rs:1369:25
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::validate_workflow
[INFO] [stdout]              at ./src/workflow/discovery.rs:163:14
[INFO] [stdout]    4: raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation
[INFO] [stdout]              at ./src/workflow/discovery.rs:478:14
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:455:42
[INFO] [stdout]    6: <raps_demo_workflows::workflow::discovery::tests::test_invalid_workflow_validation::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567c7b8833d2 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567c7b89b54a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567c7b89b54a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x567c7b888b76 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567c7b888b76 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567c7b85e97f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567c7b85e97f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567c7b87a459 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567c7b6fd3ae - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x567c7b6fd3ae - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567c7b87a6c2 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x567c7b87a6c2 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567c7b85ea38 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x567c7b855b09 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567c7b85fb3d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567c7b89bc8c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567c7b89ba02 - core[c5ed12ab89cc536a]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x567c7b50827b - <core[c5ed12ab89cc536a]::result::Result<raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::ValidationResult, anyhow[e6e9745ca2710ff8]::Error>>::unwrap
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/result.rs:1233:23
[INFO] [stdout]   21:     0x567c7b50827b - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_invalid_workflow_validation
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:479:14
[INFO] [stdout]   22:     0x567c7b4fb727 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_invalid_workflow_validation::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:455:42
[INFO] [stdout]   23:     0x567c7b4551c6 - <raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_invalid_workflow_validation::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567c7b6f175b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x567c7b6f175b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x567c7b6fdfba - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x567c7b6f8484 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x567c7b6f8484 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x567c7b700ab2 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x567c7b700ab2 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x567c7b8826ff - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x567c7b8826ff - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x765e69e01aa4 - <unknown>
[INFO] [stdout]   45:     0x765e69e8ea64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- workflow::discovery::tests::test_dependency_resolution stdout ----
[INFO] [stdout] ERROR loading workflow /tmp/.tmpPxk45L/workflow-a.yaml: Failed to parse workflow YAML: /tmp/.tmpPxk45L/workflow-a.yaml
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end` at line 6 column 13
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <serde_yaml::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error> as anyhow::Context<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error>>::with_context::<alloc::string::String, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition<&std::path::Path>::{closure#1}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/context.rs:65:37
[INFO] [stdout]    2: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:153:14
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::discover_workflows
[INFO] [stdout]              at ./src/workflow/discovery.rs:120:28
[INFO] [stdout]    4: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::new::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:95:19
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_dependency_resolution
[INFO] [stdout]              at ./src/workflow/discovery.rs:543:29
[INFO] [stdout]    6: raps_demo_workflows::workflow::discovery::tests::test_dependency_resolution::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:487:36
[INFO] [stdout]    7: <raps_demo_workflows::workflow::discovery::tests::test_dependency_resolution::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    9: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   10: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   11: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   12: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   13: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   14: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   15: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   16: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   17: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   18: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   19: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   20: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   21: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   22: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   23: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   24: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   25: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   27: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   28: <unknown>
[INFO] [stdout]   29: clone
[INFO] [stdout] ERROR loading workflow /tmp/.tmpPxk45L/workflow-b.yaml: Failed to parse workflow YAML: /tmp/.tmpPxk45L/workflow-b.yaml
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end` at line 6 column 13
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <serde_yaml::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error> as anyhow::Context<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error>>::with_context::<alloc::string::String, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition<&std::path::Path>::{closure#1}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/context.rs:65:37
[INFO] [stdout]    2: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:153:14
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::discover_workflows
[INFO] [stdout]              at ./src/workflow/discovery.rs:120:28
[INFO] [stdout]    4: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::new::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:95:19
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_dependency_resolution
[INFO] [stdout]              at ./src/workflow/discovery.rs:543:29
[INFO] [stdout]    6: raps_demo_workflows::workflow::discovery::tests::test_dependency_resolution::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:487:36
[INFO] [stdout]    7: <raps_demo_workflows::workflow::discovery::tests::test_dependency_resolution::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    9: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   10: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   11: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   12: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   13: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   14: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   15: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   16: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   17: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   18: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   19: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   20: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   21: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   22: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   23: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   24: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   25: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   27: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   28: <unknown>
[INFO] [stdout]   29: clone
[INFO] [stdout] 
[INFO] [stdout] thread 'workflow::discovery::tests::test_dependency_resolution' (73) panicked at src/workflow/discovery.rs:549:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: ["workflow-a"]
[INFO] [stdout]  right: ["workflow-b", "workflow-a"]
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567c7b8833d2 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567c7b89b54a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567c7b89b54a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x567c7b888b76 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567c7b888b76 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567c7b85e97f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567c7b85e97f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567c7b87a459 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567c7b6fd3ae - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x567c7b6fd3ae - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567c7b87a6c2 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x567c7b87a6c2 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567c7b85ea38 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x567c7b855b09 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567c7b85fb3d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567c7b89bc8c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567c7b89bb43 - core[c5ed12ab89cc536a]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x567c7b49b86c - core[c5ed12ab89cc536a]::panicking::assert_failed::<alloc[9c68fdf4f4f29218]::vec::Vec<alloc[9c68fdf4f4f29218]::string::String>, alloc[9c68fdf4f4f29218]::vec::Vec<alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x567c7b507c56 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_dependency_resolution
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:549:9
[INFO] [stdout]   22:     0x567c7b4fb6f7 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_dependency_resolution::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:487:36
[INFO] [stdout]   23:     0x567c7b455186 - <raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_dependency_resolution::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567c7b6f175b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x567c7b6f175b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x567c7b6fdfba - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x567c7b6f8484 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x567c7b6f8484 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x567c7b700ab2 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x567c7b700ab2 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x567c7b8826ff - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x567c7b8826ff - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x765e69e01aa4 - <unknown>
[INFO] [stdout]   45:     0x765e69e8ea64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- workflow::discovery::tests::test_workflow_validation stdout ----
[INFO] [stdout] ERROR loading workflow /tmp/.tmpKkFP61/test-workflow.yaml: Failed to parse workflow YAML: /tmp/.tmpKkFP61/test-workflow.yaml
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end` at line 6 column 13
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <serde_yaml::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error> as anyhow::Context<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error>>::with_context::<alloc::string::String, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition<&std::path::Path>::{closure#1}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/context.rs:65:37
[INFO] [stdout]    2: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:153:14
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::discover_workflows
[INFO] [stdout]              at ./src/workflow/discovery.rs:120:28
[INFO] [stdout]    4: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::new::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:95:19
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_workflow_validation
[INFO] [stdout]              at ./src/workflow/discovery.rs:444:29
[INFO] [stdout]    6: raps_demo_workflows::workflow::discovery::tests::test_workflow_validation::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:438:34
[INFO] [stdout]    7: <raps_demo_workflows::workflow::discovery::tests::test_workflow_validation::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    9: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   10: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   11: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   12: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   13: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   14: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   15: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   16: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   17: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   18: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   19: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   20: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   21: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   22: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   23: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   24: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   25: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   27: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   28: <unknown>
[INFO] [stdout]   29: clone
[INFO] [stdout] ERROR loading workflow /tmp/.tmpKkFP61/test-workflow.yaml: Failed to parse workflow YAML: /tmp/.tmpKkFP61/test-workflow.yaml
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     metadata.category: unknown variant `ObjectStorage`, expected one of `object-storage`, `oss`, `md`, `model-derivative`, `data-management`, `dm`, `da`, `design-automation`, `acc`, `construction-cloud`, `rc`, `reality-capture`, `webhooks`, `e2e`, `end-to-end` at line 6 column 13
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <serde_yaml::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error> as anyhow::Context<raps_demo_workflows::workflow::discovery::WorkflowDefinition, serde_yaml::error::Error>>::with_context::<alloc::string::String, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition<&std::path::Path>::{closure#1}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/context.rs:65:37
[INFO] [stdout]    2: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::load_workflow_definition::<&std::path::Path>
[INFO] [stdout]              at ./src/workflow/discovery.rs:153:14
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::discover_workflows
[INFO] [stdout]              at ./src/workflow/discovery.rs:120:28
[INFO] [stdout]    4: raps_demo_workflows::workflow::discovery::tests::test_workflow_validation
[INFO] [stdout]              at ./src/workflow/discovery.rs:445:19
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_workflow_validation::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:438:34
[INFO] [stdout]    6: <raps_demo_workflows::workflow::discovery::tests::test_workflow_validation::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] thread 'workflow::discovery::tests::test_workflow_validation' (77) panicked at src/workflow/discovery.rs:448:14:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Workflow not found: test-workflow
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/backtrace.rs:27:14
[INFO] [stdout]    1: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::validate_workflow::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:163:28
[INFO] [stdout]    2: <core::option::Option<&raps_demo_workflows::workflow::discovery::WorkflowDefinition>>::ok_or_else::<anyhow::Error, <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::validate_workflow::{closure#0}>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/option.rs:1369:25
[INFO] [stdout]    3: <raps_demo_workflows::workflow::discovery::WorkflowDiscovery>::validate_workflow
[INFO] [stdout]              at ./src/workflow/discovery.rs:163:14
[INFO] [stdout]    4: raps_demo_workflows::workflow::discovery::tests::test_workflow_validation
[INFO] [stdout]              at ./src/workflow/discovery.rs:447:14
[INFO] [stdout]    5: raps_demo_workflows::workflow::discovery::tests::test_workflow_validation::{closure#0}
[INFO] [stdout]              at ./src/workflow/discovery.rs:438:34
[INFO] [stdout]    6: <raps_demo_workflows::workflow::discovery::tests::test_workflow_validation::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567c7b8833d2 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567c7b8833d2 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567c7b89b54a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567c7b89b54a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x567c7b888b76 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567c7b888b76 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567c7b85e97f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567c7b85e97f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567c7b87a459 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567c7b6fd3ae - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x567c7b6fd3ae - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567c7b87a6c2 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x567c7b87a6c2 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567c7b85ea38 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x567c7b855b09 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567c7b85fb3d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567c7b89bc8c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567c7b89ba02 - core[c5ed12ab89cc536a]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x567c7b507278 - <core[c5ed12ab89cc536a]::result::Result<raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::ValidationResult, anyhow[e6e9745ca2710ff8]::Error>>::unwrap
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/result.rs:1233:23
[INFO] [stdout]   21:     0x567c7b507278 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_validation
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:448:14
[INFO] [stdout]   22:     0x567c7b4fb6c7 - raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_validation::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/workflow/discovery.rs:438:34
[INFO] [stdout]   23:     0x567c7b455146 - <raps_demo_workflows[573f06f939c4eb21]::workflow::discovery::tests::test_workflow_validation::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567c7b6f175b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x567c7b6f175b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x567c7b6fdfba - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x567c7b6fdfba - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x567c7b6fdfba - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x567c7b6f8484 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x567c7b6f8484 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x567c7b700ab2 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x567c7b700ab2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x567c7b700ab2 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x567c7b8826ff - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x567c7b8826ff - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x765e69e01aa4 - <unknown>
[INFO] [stdout]   45:     0x765e69e8ea64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     workflow::discovery::tests::test_dependency_resolution
[INFO] [stdout]     workflow::discovery::tests::test_invalid_workflow_validation
[INFO] [stdout]     workflow::discovery::tests::test_workflow_definition_parsing
[INFO] [stdout]     workflow::discovery::tests::test_workflow_discovery
[INFO] [stdout]     workflow::discovery::tests::test_workflow_validation
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 46 passed; 5 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "6d3d154b3e6c9f09664a10b603701154afed261b7560b93ff5b29b66ca22336b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6d3d154b3e6c9f09664a10b603701154afed261b7560b93ff5b29b66ca22336b", kill_on_drop: false }`
[INFO] [stdout] 6d3d154b3e6c9f09664a10b603701154afed261b7560b93ff5b29b66ca22336b
