Update archipelago: API, auth, container, parmanode, performance, security

- API handler, RPC, and server updates
- Auth and coding rules
- Container data manager, dev orchestrator, health monitor, podman client
- Parmanode script runner
- Performance resource manager
- Security container policies and secrets manager
- Add build scripts and documentation
This commit is contained in:
Dorian
2026-01-27 22:27:17 +00:00
parent 0d073fa89e
commit 1c024c5d64
5332 changed files with 8978 additions and 24160 deletions
+11 -16
View File
@@ -1,15 +1,12 @@
use crate::api::rpc::RpcHandler;
use crate::config::Config;
use anyhow::Result;
use http_body_util::{BodyExt, Full};
use hyper::body::Bytes;
use hyper::{Method, Request, Response, StatusCode};
use hyper_util::rt::TokioIo;
use std::sync::Arc;
use tracing::debug;
pub struct ApiHandler {
config: Config,
_config: Config,
rpc_handler: Arc<RpcHandler>,
// Add other handlers here (websocket, static files, etc.)
}
@@ -19,28 +16,26 @@ impl ApiHandler {
let rpc_handler = Arc::new(RpcHandler::new(config.clone()).await?);
Ok(Self {
config,
_config: config,
rpc_handler,
})
}
pub async fn handle_request(
&self,
req: Request<http_body_util::Incoming>,
) -> Result<Response<Full<Bytes>>> {
req: Request<hyper::Body>,
) -> Result<Response<hyper::Body>> {
// Extract path and method before consuming req
let path = req.uri().path().to_string();
let method = req.method().clone();
// Convert body to bytes using http_body_util::BodyExt
// Convert body to bytes
let (parts, body) = req.into_parts();
use http_body_util::BodyExt;
let collected: http_body_util::Collected<Bytes> = body.collect().await
.map_err(|_e| anyhow::anyhow!("Failed to read body"))?;
let body_bytes = collected.to_bytes();
let body_bytes = hyper::body::to_bytes(body).await
.map_err(|e| anyhow::anyhow!("Failed to read body: {}", e))?;
// Reconstruct request with Full<Bytes> body for RPC handler
let req_with_bytes = Request::from_parts(parts, Full::new(body_bytes));
// Reconstruct request with body as Bytes for RPC handler
let req_with_bytes = Request::from_parts(parts, hyper::Body::from(body_bytes));
debug!("{} {}", method, path);
@@ -52,13 +47,13 @@ impl ApiHandler {
(Method::GET, "/health") => {
Ok(Response::builder()
.status(StatusCode::OK)
.body(Full::new(Bytes::from("OK")))
.body(hyper::Body::from("OK"))
.unwrap())
}
_ => {
Ok(Response::builder()
.status(StatusCode::NOT_FOUND)
.body(Full::new(Bytes::from("Not Found")))
.body(hyper::Body::from("Not Found"))
.unwrap())
}
}
-1
View File
@@ -2,4 +2,3 @@ mod handler;
mod rpc;
pub use handler::ApiHandler;
pub use rpc::RpcHandler;
+8 -14
View File
@@ -1,12 +1,9 @@
use crate::config::Config;
use crate::container::DevContainerOrchestrator;
use anyhow::{Context, Result};
use http_body_util::{BodyExt, Full};
use hyper::body::Bytes;
use hyper::{Request, Response, StatusCode};
use serde::{Deserialize, Serialize};
use std::sync::Arc;
use tokio::sync::RwLock;
use tracing::{debug, error};
#[derive(Debug, Deserialize)]
@@ -29,7 +26,7 @@ struct RpcError {
}
pub struct RpcHandler {
config: Config,
_config: Config,
orchestrator: Option<Arc<DevContainerOrchestrator>>,
}
@@ -44,22 +41,19 @@ impl RpcHandler {
};
Ok(Self {
config,
_config: config,
orchestrator,
})
}
pub async fn handle(
&self,
req: Request<Full<Bytes>>,
) -> Result<Response<Full<Bytes>>> {
// Read request body - Full<Bytes> is already collected
req: Request<hyper::Body>,
) -> Result<Response<hyper::Body>> {
// Read request body
let (_, body) = req.into_parts();
// Full<Bytes> implements Body, collect it to get the bytes
use http_body_util::BodyExt;
let collected = body.collect().await
.context("Failed to collect body")?;
let body_bytes = collected.to_bytes();
let body_bytes = hyper::body::to_bytes(body).await
.context("Failed to read body")?;
let rpc_req: RpcRequest = serde_json::from_slice(&body_bytes)
.context("Invalid RPC request")?;
@@ -108,7 +102,7 @@ impl RpcHandler {
Ok(Response::builder()
.status(StatusCode::OK)
.header("Content-Type", "application/json")
.body(Full::new(Bytes::from(body)))
.body(hyper::Body::from(body))
.unwrap())
}
+3
View File
@@ -6,6 +6,7 @@ use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use tokio::fs;
#[allow(dead_code)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub password_hash: String,
@@ -13,10 +14,12 @@ pub struct User {
pub onboarding_complete: bool,
}
#[allow(dead_code)]
pub struct AuthManager {
data_dir: PathBuf,
}
#[allow(dead_code)]
impl AuthManager {
pub fn new(data_dir: PathBuf) -> Self {
Self { data_dir }
@@ -1,5 +1,5 @@
use anyhow::{Context, Result};
use std::path::{Path, PathBuf};
use std::path::PathBuf;
use tokio::fs;
pub struct DevDataManager {
@@ -66,6 +66,7 @@ impl DevDataManager {
}
/// Get all app data directories
#[allow(dead_code)]
pub async fn list_app_data_dirs(&self) -> Result<Vec<String>> {
if !self.dev_data_dir.exists() {
return Ok(vec![]);
@@ -3,9 +3,7 @@ use archipelago_container::{
ContainerStatus, PortManager,
};
use anyhow::{Context, Result};
use std::path::PathBuf;
use std::sync::Arc;
use tokio::sync::RwLock;
use crate::config::{Config, ContainerRuntime, BitcoinSimulation};
use crate::container::data_manager::DevDataManager;
@@ -65,7 +63,7 @@ impl DevContainerOrchestrator {
pub async fn install_container(
&self,
manifest: &AppManifest,
manifest_path: &str,
_manifest_path: &str,
) -> Result<String> {
let app_id = &manifest.app.id;
let container_name = format!("archipelago-{}-dev", app_id);
@@ -251,11 +249,13 @@ impl DevContainerOrchestrator {
}
/// Get port mapping for an app
#[allow(dead_code)]
pub fn get_port_mapping(&self, app_id: &str) -> Option<Vec<u16>> {
self.port_manager.get_port_mapping(app_id)
}
/// Get Bitcoin simulator
#[allow(dead_code)]
pub fn bitcoin_simulator(&self) -> &Arc<BitcoinSimulator> {
&self.bitcoin_simulator
}
-1
View File
@@ -1,5 +1,4 @@
pub mod data_manager;
pub mod dev_orchestrator;
pub use data_manager::DevDataManager;
pub use dev_orchestrator::DevContainerOrchestrator;
+1 -1
View File
@@ -3,7 +3,7 @@
use anyhow::Result;
use std::net::SocketAddr;
use tracing::{info, error};
use tracing::info;
mod api;
mod auth;
+7 -15
View File
@@ -1,16 +1,15 @@
use crate::api::ApiHandler;
use crate::config::Config;
use anyhow::Result;
use hyper_util::rt::TokioIo;
use hyper_util::server::conn::auto::Builder as AutoBuilder;
use hyper::server::conn::Http;
use hyper::service::service_fn;
use std::net::SocketAddr;
use std::sync::Arc;
use tokio::net::TcpListener;
use hyper::service::service_fn;
use tracing::{error, info};
use tracing::error;
pub struct Server {
config: Config,
_config: Config,
api_handler: Arc<ApiHandler>,
}
@@ -19,7 +18,7 @@ impl Server {
let api_handler = Arc::new(ApiHandler::new(config.clone()).await?);
Ok(Self {
config,
_config: config,
api_handler,
})
}
@@ -36,7 +35,6 @@ impl Server {
}
};
let io = TokioIo::new(stream);
let handler = self.api_handler.clone();
tokio::spawn(async move {
@@ -48,14 +46,8 @@ impl Server {
}
});
let mut builder = AutoBuilder::new(
hyper_util::rt::TokioExecutor::new()
);
// Use HTTP/1.1 only for now
builder = builder.http1_only();
if let Err(e) = builder
.serve_connection(io, service)
if let Err(e) = Http::new()
.serve_connection(stream, service)
.await
{
error!("Error serving connection from {}: {}", peer_addr, e);
+1 -1
View File
@@ -2,7 +2,7 @@ use crate::manifest::HealthCheck;
use anyhow::{Context, Result};
use serde::{Deserialize, Serialize};
use std::time::Duration;
use tokio::time::{interval, sleep};
use tokio::time::interval;
use tracing::{error, info, warn};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
+3 -3
View File
@@ -1,8 +1,7 @@
use crate::manifest::{AppManifest, PortMapping, Volume};
use crate::manifest::AppManifest;
use anyhow::{Context, Result};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::process::{Command, Stdio};
use std::process::Command;
use thiserror::Error;
use tokio::process::Command as TokioCommand;
@@ -62,6 +61,7 @@ impl PodmanClient {
}
}
#[allow(dead_code)]
fn podman_command(&self) -> Command {
let mut cmd = Command::new("podman");
if self.rootless {
+6 -6
View File
@@ -1,7 +1,7 @@
// Parmanode script runner - executes Parmanode installation scripts in containers
// Provides compatibility layer for existing Parmanode modules
use archipelago_container::{PodmanClient, AppManifest};
use archipelago_container::PodmanClient;
use anyhow::{Context, Result};
use std::path::PathBuf;
use std::process::Command;
@@ -9,15 +9,15 @@ use tokio::fs;
use tracing::{info, warn};
pub struct ParmanodeScriptRunner {
podman: PodmanClient,
scripts_dir: PathBuf,
_podman: PodmanClient,
_scripts_dir: PathBuf,
}
impl ParmanodeScriptRunner {
pub fn new(scripts_dir: PathBuf) -> Self {
Self {
podman: PodmanClient::new("archipelago".to_string()),
scripts_dir,
_podman: PodmanClient::new("archipelago".to_string()),
_scripts_dir: scripts_dir,
}
}
@@ -48,7 +48,7 @@ impl ParmanodeScriptRunner {
.unwrap_or("parmanode-script");
// Create a minimal container to run the script
let container_name = format!("parmanode-{}", script_name);
let _container_name = format!("parmanode-{}", script_name);
// Copy script to a location accessible by containers
let script_content = fs::read_to_string(script_path).await
+1 -1
View File
@@ -3,7 +3,7 @@
use anyhow::Result;
use std::collections::HashMap;
use tracing::{info, warn};
use tracing::info;
#[derive(Debug, Clone)]
pub struct ResourceLimits {
+1 -2
View File
@@ -2,7 +2,6 @@
// Creates security profiles for each containerized app
use anyhow::Result;
use std::collections::HashMap;
use std::path::PathBuf;
use tokio::fs;
@@ -58,7 +57,7 @@ impl ContainerPolicyGenerator {
}
/// Apply AppArmor profile to a container
pub async fn apply_profile(&self, container_name: &str, profile_path: &PathBuf) -> Result<()> {
pub async fn apply_profile(&self, _container_name: &str, profile_path: &PathBuf) -> Result<()> {
// Load the profile
tokio::process::Command::new("apparmor_parser")
.arg("-r")
+3 -4
View File
@@ -2,21 +2,20 @@
// Stores secrets securely and injects them at runtime
use anyhow::{Context, Result};
use std::collections::HashMap;
use std::path::PathBuf;
use tokio::fs;
use uuid::Uuid;
pub struct SecretsManager {
secrets_dir: PathBuf,
encryption_key: Vec<u8>, // In production, derive from user password
_encryption_key: Vec<u8>, // In production, derive from user password
}
impl SecretsManager {
pub fn new(secrets_dir: PathBuf, encryption_key: Vec<u8>) -> Self {
Self {
secrets_dir,
encryption_key,
_encryption_key: encryption_key,
}
}
@@ -24,7 +23,7 @@ impl SecretsManager {
pub async fn store_secret(
&self,
app_id: &str,
key: &str,
_key: &str,
value: &str,
) -> Result<String> {
let secret_id = Uuid::new_v4().to_string();
+1 -1
View File
@@ -1 +1 @@
{"rustc_fingerprint":17781755363700482913,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.93.0 (254b59607 2026-01-19)\nbinary: rustc\ncommit-hash: 254b59607d4417e9dffbc307138ae5c86280fe4c\ncommit-date: 2026-01-19\nhost: aarch64-apple-darwin\nrelease: 1.93.0\nLLVM version: 21.1.8\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/tx1138/.rustup/toolchains/stable-aarch64-apple-darwin\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"aarch64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"aes\"\ntarget_feature=\"crc\"\ntarget_feature=\"dit\"\ntarget_feature=\"dotprod\"\ntarget_feature=\"dpb\"\ntarget_feature=\"dpb2\"\ntarget_feature=\"fcma\"\ntarget_feature=\"fhm\"\ntarget_feature=\"flagm\"\ntarget_feature=\"fp16\"\ntarget_feature=\"frintts\"\ntarget_feature=\"jsconv\"\ntarget_feature=\"lor\"\ntarget_feature=\"lse\"\ntarget_feature=\"neon\"\ntarget_feature=\"paca\"\ntarget_feature=\"pacg\"\ntarget_feature=\"pan\"\ntarget_feature=\"pmuv3\"\ntarget_feature=\"ras\"\ntarget_feature=\"rcpc\"\ntarget_feature=\"rcpc2\"\ntarget_feature=\"rdm\"\ntarget_feature=\"sb\"\ntarget_feature=\"sha2\"\ntarget_feature=\"sha3\"\ntarget_feature=\"ssbs\"\ntarget_feature=\"vh\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n","stderr":""}},"successes":{}}
{"rustc_fingerprint":15379823119225650859,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/dorian/.rustup/toolchains/stable-aarch64-apple-darwin\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"aarch64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"aes\"\ntarget_feature=\"crc\"\ntarget_feature=\"dit\"\ntarget_feature=\"dotprod\"\ntarget_feature=\"dpb\"\ntarget_feature=\"dpb2\"\ntarget_feature=\"fcma\"\ntarget_feature=\"fhm\"\ntarget_feature=\"flagm\"\ntarget_feature=\"fp16\"\ntarget_feature=\"frintts\"\ntarget_feature=\"jsconv\"\ntarget_feature=\"lor\"\ntarget_feature=\"lse\"\ntarget_feature=\"neon\"\ntarget_feature=\"paca\"\ntarget_feature=\"pacg\"\ntarget_feature=\"pan\"\ntarget_feature=\"pmuv3\"\ntarget_feature=\"ras\"\ntarget_feature=\"rcpc\"\ntarget_feature=\"rcpc2\"\ntarget_feature=\"rdm\"\ntarget_feature=\"sb\"\ntarget_feature=\"sha2\"\ntarget_feature=\"sha3\"\ntarget_feature=\"ssbs\"\ntarget_feature=\"vh\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n","stderr":""},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.93.0 (254b59607 2026-01-19)\nbinary: rustc\ncommit-hash: 254b59607d4417e9dffbc307138ae5c86280fe4c\ncommit-date: 2026-01-19\nhost: aarch64-apple-darwin\nrelease: 1.93.0\nLLVM version: 21.1.8\n","stderr":""}},"successes":{}}
-1
View File
@@ -1 +0,0 @@
{"rustc_vv":"rustc 1.93.0 (254b59607 2026-01-19)\nbinary: rustc\ncommit-hash: 254b59607d4417e9dffbc307138ae5c86280fe4c\ncommit-date: 2026-01-19\nhost: aarch64-apple-darwin\nrelease: 1.93.0\nLLVM version: 21.1.8\n"}
@@ -1 +1 @@
f3c63ea89fe8e1c3
f063db7724dc746f
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":16100955855663461252,"profile":8276155916380437441,"path":424456098847255390,"deps":[[1852463361802237065,"build_script_build",false,4972819061461867349]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anyhow-0c2fd7bec7f65a6c/dep-lib-anyhow","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":16100955855663461252,"profile":8276155916380437441,"path":12999072531080447437,"deps":[[1852463361802237065,"build_script_build",false,7132672971614726653]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anyhow-0c2fd7bec7f65a6c/dep-lib-anyhow","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
a0e03100bdd65278
7b85fc7cf6f2d77b
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":17883862002600103897,"profile":3033921117576893,"path":4815979055793652229,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anyhow-6af8f50c0ed79557/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":17883862002600103897,"profile":3033921117576893,"path":13502563533484393035,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anyhow-6af8f50c0ed79557/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
ad24d212a93e567e
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":16100955855663461252,"profile":5347358027863023418,"path":12999072531080447437,"deps":[[1852463361802237065,"build_script_build",false,7132672971614726653]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anyhow-dd9e5f14fba78983/dep-lib-anyhow","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
55dbb9da96000345
fd2920f44658fc62
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[1852463361802237065,"build_script_build",false,8670228339882057888]],"local":[{"RerunIfChanged":{"output":"debug/build/anyhow-df659377c9a99701/output","paths":["src/nightly.rs"]}},{"RerunIfEnvChanged":{"var":"RUSTC_BOOTSTRAP","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
{"rustc":2833068300835136146,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[1852463361802237065,"build_script_build",false,8923868327130727803]],"local":[{"RerunIfChanged":{"output":"debug/build/anyhow-df659377c9a99701/output","paths":["src/nightly.rs"]}},{"RerunIfEnvChanged":{"var":"RUSTC_BOOTSTRAP","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
@@ -0,0 +1 @@
ba0fd5ab2bfd18ff
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":10965351249305853643,"profile":6675295047989516842,"path":14417968248799496436,"deps":[[480535474702857125,"archipelago_parmanode",false,4879383623271309848],[1420800981318104879,"uuid",false,5474560211739917676],[1852463361802237065,"anyhow",false,9103532592662193325],[2765139861197920092,"tokio_tungstenite",false,15713268319864692672],[3632162862999675140,"tower",false,14121525895974965462],[4914321236340703631,"bcrypt",false,17415331430475568721],[7414427314941361239,"hyper",false,9198913532364270214],[8008191657135824715,"thiserror",false,6645744484973387424],[8098305783429564872,"hyper_util",false,8955056748997189054],[8434721349366383850,"tower_http",false,9932179785593766790],[9614479274285663593,"serde_yaml",false,15430932598686726445],[12041186341109472307,"tracing_subscriber",false,4938188967904241074],[12891030758458664808,"tokio",false,502683732665166093],[13548984313718623784,"serde",false,4449569780738447456],[13795362694956882968,"serde_json",false,9051208211132860743],[14084095096285906100,"http_body",false,3015680107118681497],[14757622794040968908,"tracing",false,4100568884566610961],[15232439917687996507,"archipelago_security",false,9476507786715524287],[15609422047640926750,"toml",false,1198573852117797412],[16900715236047033623,"http_body_util",false,17972733242288742886],[17249058192109047627,"archipelago_container",false,3018958685364502100],[17359028067682349245,"archipelago_performance",false,13322354868286784750]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-515a28045a69cbd3/dep-bin-archipelago","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1,12 +0,0 @@
{"$message_type":"diagnostic","message":"unresolved import `http_body`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":197,"byte_end":206,"line_start":7,"line_end":7,"column_start":5,"column_end":14,"is_primary":true,"text":[{"text":"use http_body::Body;","highlight_start":5,"highlight_end":14}],"label":"use of unresolved module or unlinked crate `http_body`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `http_body`, use `cargo add http_body` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `http_body`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/handler.rs:7:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use http_body::Body;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `http_body`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `http_body`, use `cargo add http_body` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"unused import: `error`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/main.rs","byte_start":175,"byte_end":180,"line_start":6,"line_end":6,"column_start":21,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{info, error};","highlight_start":21,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"archipelago/src/main.rs","byte_start":173,"byte_end":180,"line_start":6,"line_end":6,"column_start":19,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{info, error};","highlight_start":19,"highlight_end":26}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/main.rs","byte_start":168,"byte_end":169,"line_start":6,"line_end":6,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"use tracing::{info, error};","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/main.rs","byte_start":180,"byte_end":181,"line_start":6,"line_end":6,"column_start":26,"column_end":27,"is_primary":true,"text":[{"text":"use tracing::{info, error};","highlight_start":26,"highlight_end":27}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `error`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/main.rs:6:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tracing::{info, error};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"unused import: `hyper_util::rt::TokioIo`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":218,"byte_end":241,"line_start":8,"line_end":8,"column_start":5,"column_end":28,"is_primary":true,"text":[{"text":"use hyper_util::rt::TokioIo;","highlight_start":5,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":214,"byte_end":243,"line_start":8,"line_end":9,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use hyper_util::rt::TokioIo;","highlight_start":1,"highlight_end":29},{"text":"use std::sync::Arc;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `hyper_util::rt::TokioIo`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/handler.rs:8:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use hyper_util::rt::TokioIo;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `tokio::sync::RwLock`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/api/rpc.rs","byte_start":272,"byte_end":291,"line_start":9,"line_end":9,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"use tokio::sync::RwLock;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/api/rpc.rs","byte_start":268,"byte_end":293,"line_start":9,"line_end":10,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use tokio::sync::RwLock;","highlight_start":1,"highlight_end":25},{"text":"use tracing::{debug, error};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `tokio::sync::RwLock`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/rpc.rs:9:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::RwLock;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `rpc::RpcHandler`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/api/mod.rs","byte_start":60,"byte_end":75,"line_start":5,"line_end":5,"column_start":9,"column_end":24,"is_primary":true,"text":[{"text":"pub use rpc::RpcHandler;","highlight_start":9,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/api/mod.rs","byte_start":52,"byte_end":77,"line_start":5,"line_end":5,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub use rpc::RpcHandler;","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `rpc::RpcHandler`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/mod.rs:5:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use rpc::RpcHandler;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `Path`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/data_manager.rs","byte_start":47,"byte_end":51,"line_start":2,"line_end":2,"column_start":17,"column_end":21,"is_primary":true,"text":[{"text":"use std::path::{Path, PathBuf};","highlight_start":17,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/data_manager.rs","byte_start":47,"byte_end":53,"line_start":2,"line_end":2,"column_start":17,"column_end":23,"is_primary":true,"text":[{"text":"use std::path::{Path, PathBuf};","highlight_start":17,"highlight_end":23}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/container/data_manager.rs","byte_start":46,"byte_end":47,"line_start":2,"line_end":2,"column_start":16,"column_end":17,"is_primary":true,"text":[{"text":"use std::path::{Path, PathBuf};","highlight_start":16,"highlight_end":17}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/container/data_manager.rs","byte_start":60,"byte_end":61,"line_start":2,"line_end":2,"column_start":30,"column_end":31,"is_primary":true,"text":[{"text":"use std::path::{Path, PathBuf};","highlight_start":30,"highlight_end":31}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `Path`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/data_manager.rs:2:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::path::{Path, PathBuf};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `std::path::PathBuf`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":202,"byte_end":220,"line_start":6,"line_end":6,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"use std::path::PathBuf;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":198,"byte_end":222,"line_start":6,"line_end":7,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::path::PathBuf;","highlight_start":1,"highlight_end":24},{"text":"use std::sync::Arc;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `std::path::PathBuf`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/dev_orchestrator.rs:6:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::path::PathBuf;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `tokio::sync::RwLock`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":246,"byte_end":265,"line_start":8,"line_end":8,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"use tokio::sync::RwLock;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":242,"byte_end":267,"line_start":8,"line_end":9,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use tokio::sync::RwLock;","highlight_start":1,"highlight_end":25},{"text":"","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `tokio::sync::RwLock`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/dev_orchestrator.rs:8:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::RwLock;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `data_manager::DevDataManager`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/mod.rs","byte_start":57,"byte_end":85,"line_start":4,"line_end":4,"column_start":9,"column_end":37,"is_primary":true,"text":[{"text":"pub use data_manager::DevDataManager;","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/mod.rs","byte_start":49,"byte_end":87,"line_start":4,"line_end":5,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub use data_manager::DevDataManager;","highlight_start":1,"highlight_end":38},{"text":"pub use dev_orchestrator::DevContainerOrchestrator;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `data_manager::DevDataManager`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/mod.rs:4:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use data_manager::DevDataManager;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `info`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/server.rs","byte_start":292,"byte_end":296,"line_start":10,"line_end":10,"column_start":22,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{error, info};","highlight_start":22,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"archipelago/src/server.rs","byte_start":290,"byte_end":296,"line_start":10,"line_end":10,"column_start":20,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{error, info};","highlight_start":20,"highlight_end":26}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/server.rs","byte_start":284,"byte_end":285,"line_start":10,"line_end":10,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"use tracing::{error, info};","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/server.rs","byte_start":296,"byte_end":297,"line_start":10,"line_end":10,"column_start":26,"column_end":27,"is_primary":true,"text":[{"text":"use tracing::{error, info};","highlight_start":26,"highlight_end":27}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `info`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/server.rs:10:22\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tracing::{error, info};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"aborting due to 1 previous error; 9 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m: aborting due to 1 previous error; 9 warnings emitted\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"For more information about this error, try `rustc --explain E0432`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mFor more information about this error, try `rustc --explain E0432`.\u001b[0m\n"}
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":6971011888066966835,"profile":6675295047989516842,"path":4211597800488477379,"deps":[[1420800981318104879,"uuid",false,5474560211739917676],[1852463361802237065,"anyhow",false,9103532592662193325],[2706460456408817945,"futures",false,8091035328959106954],[7244058819997729774,"reqwest",false,9177377371587601980],[8008191657135824715,"thiserror",false,6645744484973387424],[9614479274285663593,"serde_yaml",false,15430932598686726445],[10630857666389190470,"log",false,4939831844590563600],[12821780872552529316,"indexmap",false,13082828044617966621],[12891030758458664808,"tokio",false,502683732665166093],[13548984313718623784,"serde",false,4449569780738447456],[13795362694956882968,"serde_json",false,9051208211132860743],[14757622794040968908,"tracing",false,4100568884566610961],[15658505062885698977,"chrono",false,17627747617197588690],[16611674984963787466,"async_trait",false,825214410827233568]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-container-5463a158c25f75e0/dep-lib-archipelago_container","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
212c110940b32a91
dbad895cdb19bc42
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":6971011888066966835,"profile":2330448797067240312,"path":4211597800488477379,"deps":[[1420800981318104879,"uuid",false,9980086480018043007],[1852463361802237065,"anyhow",false,14114818479575975667],[2706460456408817945,"futures",false,9654713081503187778],[7244058819997729774,"reqwest",false,2740342205563601047],[8008191657135824715,"thiserror",false,2124363999165174421],[9614479274285663593,"serde_yaml",false,6523364242347324304],[10630857666389190470,"log",false,2562829740378362980],[12821780872552529316,"indexmap",false,15099987549844686382],[12891030758458664808,"tokio",false,12639561099177907813],[13548984313718623784,"serde",false,12703564881866977758],[13795362694956882968,"serde_json",false,3265888975423518729],[14757622794040968908,"tracing",false,15378798741767827401],[15658505062885698977,"chrono",false,16457918055286614697],[16611674984963787466,"async_trait",false,1018998281518085578]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-container-d5c511c7928fed02/dep-lib-archipelago_container","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":6971011888066966835,"profile":2330448797067240312,"path":4211597800488477379,"deps":[[1420800981318104879,"uuid",false,3578758660580005844],[1852463361802237065,"anyhow",false,8031286084696237040],[2706460456408817945,"futures",false,12023333968625930318],[7244058819997729774,"reqwest",false,494129412703490642],[8008191657135824715,"thiserror",false,16142162043116050431],[9614479274285663593,"serde_yaml",false,4384511469997886110],[10630857666389190470,"log",false,12037355621368168183],[12821780872552529316,"indexmap",false,5746694034372634530],[12891030758458664808,"tokio",false,10738320512238600203],[13548984313718623784,"serde",false,14680374509786099304],[13795362694956882968,"serde_json",false,5595358121822832738],[14757622794040968908,"tracing",false,15915956980741015743],[15658505062885698977,"chrono",false,6401165642771929291],[16611674984963787466,"async_trait",false,825214410827233568]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-container-d5c511c7928fed02/dep-lib-archipelago_container","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1,6 +0,0 @@
{"$message_type":"diagnostic","message":"unused imports: `PortMapping` and `Volume`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"container/src/podman_client.rs","byte_start":35,"byte_end":46,"line_start":1,"line_end":1,"column_start":36,"column_end":47,"is_primary":true,"text":[{"text":"use crate::manifest::{AppManifest, PortMapping, Volume};","highlight_start":36,"highlight_end":47}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"container/src/podman_client.rs","byte_start":48,"byte_end":54,"line_start":1,"line_end":1,"column_start":49,"column_end":55,"is_primary":true,"text":[{"text":"use crate::manifest::{AppManifest, PortMapping, Volume};","highlight_start":49,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused imports","code":null,"level":"help","spans":[{"file_name":"container/src/podman_client.rs","byte_start":33,"byte_end":54,"line_start":1,"line_end":1,"column_start":34,"column_end":55,"is_primary":true,"text":[{"text":"use crate::manifest::{AppManifest, PortMapping, Volume};","highlight_start":34,"highlight_end":55}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"container/src/podman_client.rs","byte_start":21,"byte_end":22,"line_start":1,"line_end":1,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":"use crate::manifest::{AppManifest, PortMapping, Volume};","highlight_start":22,"highlight_end":23}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"container/src/podman_client.rs","byte_start":54,"byte_end":55,"line_start":1,"line_end":1,"column_start":55,"column_end":56,"is_primary":true,"text":[{"text":"use crate::manifest::{AppManifest, PortMapping, Volume};","highlight_start":55,"highlight_end":56}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `PortMapping` and `Volume`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcontainer/src/podman_client.rs:1:36\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::manifest::{AppManifest, PortMapping, Volume};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"unused import: `std::collections::HashMap`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"container/src/podman_client.rs","byte_start":129,"byte_end":154,"line_start":4,"line_end":4,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"use std::collections::HashMap;","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"container/src/podman_client.rs","byte_start":125,"byte_end":156,"line_start":4,"line_end":5,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::collections::HashMap;","highlight_start":1,"highlight_end":31},{"text":"use std::process::{Command, Stdio};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `std::collections::HashMap`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcontainer/src/podman_client.rs:4:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::collections::HashMap;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `Stdio`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"container/src/podman_client.rs","byte_start":184,"byte_end":189,"line_start":5,"line_end":5,"column_start":29,"column_end":34,"is_primary":true,"text":[{"text":"use std::process::{Command, Stdio};","highlight_start":29,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"container/src/podman_client.rs","byte_start":182,"byte_end":189,"line_start":5,"line_end":5,"column_start":27,"column_end":34,"is_primary":true,"text":[{"text":"use std::process::{Command, Stdio};","highlight_start":27,"highlight_end":34}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"container/src/podman_client.rs","byte_start":174,"byte_end":175,"line_start":5,"line_end":5,"column_start":19,"column_end":20,"is_primary":true,"text":[{"text":"use std::process::{Command, Stdio};","highlight_start":19,"highlight_end":20}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"container/src/podman_client.rs","byte_start":189,"byte_end":190,"line_start":5,"line_end":5,"column_start":34,"column_end":35,"is_primary":true,"text":[{"text":"use std::process::{Command, Stdio};","highlight_start":34,"highlight_end":35}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `Stdio`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcontainer/src/podman_client.rs:5:29\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::process::{Command, Stdio};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `sleep`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"container/src/health_monitor.rs","byte_start":155,"byte_end":160,"line_start":5,"line_end":5,"column_start":29,"column_end":34,"is_primary":true,"text":[{"text":"use tokio::time::{interval, sleep};","highlight_start":29,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"container/src/health_monitor.rs","byte_start":153,"byte_end":160,"line_start":5,"line_end":5,"column_start":27,"column_end":34,"is_primary":true,"text":[{"text":"use tokio::time::{interval, sleep};","highlight_start":27,"highlight_end":34}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"container/src/health_monitor.rs","byte_start":144,"byte_end":145,"line_start":5,"line_end":5,"column_start":18,"column_end":19,"is_primary":true,"text":[{"text":"use tokio::time::{interval, sleep};","highlight_start":18,"highlight_end":19}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"container/src/health_monitor.rs","byte_start":160,"byte_end":161,"line_start":5,"line_end":5,"column_start":34,"column_end":35,"is_primary":true,"text":[{"text":"use tokio::time::{interval, sleep};","highlight_start":34,"highlight_end":35}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `sleep`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcontainer/src/health_monitor.rs:5:29\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::time::{interval, sleep};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"method `podman_command` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"container/src/podman_client.rs","byte_start":1413,"byte_end":1430,"line_start":57,"line_end":57,"column_start":1,"column_end":18,"is_primary":false,"text":[{"text":"impl PodmanClient {","highlight_start":1,"highlight_end":18}],"label":"method in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"container/src/podman_client.rs","byte_start":1561,"byte_end":1575,"line_start":65,"line_end":65,"column_start":8,"column_end":22,"is_primary":true,"text":[{"text":" fn podman_command(&self) -> Command {","highlight_start":8,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: method `podman_command` is never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcontainer/src/podman_client.rs:65:8\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl PodmanClient {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-----------------\u001b[0m \u001b[1m\u001b[94mmethod in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m65\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn podman_command(&self) -> Command {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"5 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 5 warnings emitted\u001b[0m\n\n"}
@@ -0,0 +1 @@
6a8dc0303d0b64f6
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":10965351249305853643,"profile":2330448797067240312,"path":14417968248799496436,"deps":[[480535474702857125,"archipelago_parmanode",false,4043314869526469756],[1420800981318104879,"uuid",false,3578758660580005844],[1852463361802237065,"anyhow",false,8031286084696237040],[2765139861197920092,"tokio_tungstenite",false,692877176376000877],[3632162862999675140,"tower",false,15250637408403814565],[4914321236340703631,"bcrypt",false,3539221227465562348],[7414427314941361239,"hyper",false,7657062789925190082],[8008191657135824715,"thiserror",false,16142162043116050431],[8098305783429564872,"hyper_util",false,6654733021916357635],[8434721349366383850,"tower_http",false,15901309608221364400],[9614479274285663593,"serde_yaml",false,4384511469997886110],[12041186341109472307,"tracing_subscriber",false,16756943780594977244],[12891030758458664808,"tokio",false,10738320512238600203],[13548984313718623784,"serde",false,14680374509786099304],[13795362694956882968,"serde_json",false,5595358121822832738],[14084095096285906100,"http_body",false,600342696533287807],[14757622794040968908,"tracing",false,15915956980741015743],[15232439917687996507,"archipelago_security",false,11277648726200455740],[15609422047640926750,"toml",false,9511682987116144900],[16900715236047033623,"http_body_util",false,1473853836021377981],[17249058192109047627,"archipelago_container",false,4808746932065906139],[17359028067682349245,"archipelago_performance",false,16529169408838057494]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-d6e22276b7d151e0/dep-bin-archipelago","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1,17 +0,0 @@
{"$message_type":"diagnostic","message":"cannot find type `Incoming` in crate `http_body_util`","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n fn bar() {\n Self; // error: unresolved name `Self`\n }\n}\n\n// or:\n\nlet x = unknown_variable; // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":723,"byte_end":731,"line_start":29,"line_end":29,"column_start":38,"column_end":46,"is_primary":true,"text":[{"text":" req: Request<http_body_util::Incoming>,","highlight_start":38,"highlight_end":46}],"label":"not found in `http_body_util`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing one of these structs","code":null,"level":"help","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::api::rpc::RpcHandler;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use std::net::Incoming;\n","suggestion_applicability":"MaybeIncorrect","expansion":null},{"file_name":"archipelago/src/api/handler.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::api::rpc::RpcHandler;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use std::os::unix::net::Incoming;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `Incoming`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":707,"byte_end":723,"line_start":29,"line_end":29,"column_start":22,"column_end":38,"is_primary":true,"text":[{"text":" req: Request<http_body_util::Incoming>,","highlight_start":22,"highlight_end":38}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find type `Incoming` in crate `http_body_util`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/handler.rs:29:38\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[1m\u001b[94m|\u001b[0m req: Request<http_body_util::Incoming>,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in `http_body_util`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing one of these structs\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m1\u001b[0m \u001b[92m+ use std::net::Incoming;\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m1\u001b[0m \u001b[92m+ use std::os::unix::net::Incoming;\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `Incoming`, refer to it directly\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[91m- \u001b[0m req: Request<\u001b[91mhttp_body_util::\u001b[0mIncoming>,\n\u001b[1m\u001b[94m29\u001b[0m \u001b[92m+ \u001b[0m req: Request<Incoming>,\n \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `error`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/main.rs","byte_start":175,"byte_end":180,"line_start":6,"line_end":6,"column_start":21,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{info, error};","highlight_start":21,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"archipelago/src/main.rs","byte_start":173,"byte_end":180,"line_start":6,"line_end":6,"column_start":19,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{info, error};","highlight_start":19,"highlight_end":26}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/main.rs","byte_start":168,"byte_end":169,"line_start":6,"line_end":6,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"use tracing::{info, error};","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/main.rs","byte_start":180,"byte_end":181,"line_start":6,"line_end":6,"column_start":26,"column_end":27,"is_primary":true,"text":[{"text":"use tracing::{info, error};","highlight_start":26,"highlight_end":27}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `error`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/main.rs:6:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tracing::{info, error};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"unused import: `hyper_util::rt::TokioIo`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":197,"byte_end":220,"line_start":7,"line_end":7,"column_start":5,"column_end":28,"is_primary":true,"text":[{"text":"use hyper_util::rt::TokioIo;","highlight_start":5,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":193,"byte_end":222,"line_start":7,"line_end":8,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use hyper_util::rt::TokioIo;","highlight_start":1,"highlight_end":29},{"text":"use std::sync::Arc;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `hyper_util::rt::TokioIo`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/handler.rs:7:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use hyper_util::rt::TokioIo;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `tokio::sync::RwLock`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/api/rpc.rs","byte_start":272,"byte_end":291,"line_start":9,"line_end":9,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"use tokio::sync::RwLock;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/api/rpc.rs","byte_start":268,"byte_end":293,"line_start":9,"line_end":10,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use tokio::sync::RwLock;","highlight_start":1,"highlight_end":25},{"text":"use tracing::{debug, error};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `tokio::sync::RwLock`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/rpc.rs:9:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::RwLock;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `rpc::RpcHandler`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/api/mod.rs","byte_start":60,"byte_end":75,"line_start":5,"line_end":5,"column_start":9,"column_end":24,"is_primary":true,"text":[{"text":"pub use rpc::RpcHandler;","highlight_start":9,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/api/mod.rs","byte_start":52,"byte_end":77,"line_start":5,"line_end":5,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub use rpc::RpcHandler;","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `rpc::RpcHandler`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/mod.rs:5:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use rpc::RpcHandler;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `Path`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/data_manager.rs","byte_start":47,"byte_end":51,"line_start":2,"line_end":2,"column_start":17,"column_end":21,"is_primary":true,"text":[{"text":"use std::path::{Path, PathBuf};","highlight_start":17,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/data_manager.rs","byte_start":47,"byte_end":53,"line_start":2,"line_end":2,"column_start":17,"column_end":23,"is_primary":true,"text":[{"text":"use std::path::{Path, PathBuf};","highlight_start":17,"highlight_end":23}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/container/data_manager.rs","byte_start":46,"byte_end":47,"line_start":2,"line_end":2,"column_start":16,"column_end":17,"is_primary":true,"text":[{"text":"use std::path::{Path, PathBuf};","highlight_start":16,"highlight_end":17}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/container/data_manager.rs","byte_start":60,"byte_end":61,"line_start":2,"line_end":2,"column_start":30,"column_end":31,"is_primary":true,"text":[{"text":"use std::path::{Path, PathBuf};","highlight_start":30,"highlight_end":31}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `Path`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/data_manager.rs:2:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::path::{Path, PathBuf};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `std::path::PathBuf`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":202,"byte_end":220,"line_start":6,"line_end":6,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"use std::path::PathBuf;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":198,"byte_end":222,"line_start":6,"line_end":7,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::path::PathBuf;","highlight_start":1,"highlight_end":24},{"text":"use std::sync::Arc;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `std::path::PathBuf`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/dev_orchestrator.rs:6:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::path::PathBuf;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `tokio::sync::RwLock`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":246,"byte_end":265,"line_start":8,"line_end":8,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"use tokio::sync::RwLock;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":242,"byte_end":267,"line_start":8,"line_end":9,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use tokio::sync::RwLock;","highlight_start":1,"highlight_end":25},{"text":"","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `tokio::sync::RwLock`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/dev_orchestrator.rs:8:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tokio::sync::RwLock;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `data_manager::DevDataManager`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/mod.rs","byte_start":57,"byte_end":85,"line_start":4,"line_end":4,"column_start":9,"column_end":37,"is_primary":true,"text":[{"text":"pub use data_manager::DevDataManager;","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/mod.rs","byte_start":49,"byte_end":87,"line_start":4,"line_end":5,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub use data_manager::DevDataManager;","highlight_start":1,"highlight_end":38},{"text":"pub use dev_orchestrator::DevContainerOrchestrator;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `data_manager::DevDataManager`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/mod.rs:4:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use data_manager::DevDataManager;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `info`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/server.rs","byte_start":292,"byte_end":296,"line_start":10,"line_end":10,"column_start":22,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{error, info};","highlight_start":22,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"archipelago/src/server.rs","byte_start":290,"byte_end":296,"line_start":10,"line_end":10,"column_start":20,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{error, info};","highlight_start":20,"highlight_end":26}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/server.rs","byte_start":284,"byte_end":285,"line_start":10,"line_end":10,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"use tracing::{error, info};","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"archipelago/src/server.rs","byte_start":296,"byte_end":297,"line_start":10,"line_end":10,"column_start":26,"column_end":27,"is_primary":true,"text":[{"text":"use tracing::{error, info};","highlight_start":26,"highlight_end":27}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `info`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/server.rs:10:22\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tracing::{error, info};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"type annotations needed","code":{"code":"E0282","explanation":"The compiler could not infer a type and asked for a type annotation.\n\nErroneous code example:\n\n```compile_fail,E0282\nlet x = Vec::new();\n```\n\nThis error indicates that type inference did not result in one unique possible\ntype, and extra information is required. In most cases this can be provided\nby adding a type annotation. Sometimes you need to specify a generic type\nparameter manually.\n\nIn the example above, type `Vec` has a type parameter `T`. When calling\n`Vec::new`, barring any other later usage of the variable `x` that allows the\ncompiler to infer what type `T` is, the compiler needs to be told what it is.\n\nThe type can be specified on the variable:\n\n```\nlet x: Vec<i32> = Vec::new();\n```\n\nThe type can also be specified in the path of the expression:\n\n```\nlet x = Vec::<i32>::new();\n```\n\nIn cases with more complex types, it is not necessary to annotate the full\ntype. Once the ambiguity is resolved, the compiler can infer the rest:\n\n```\nlet x: Vec<_> = \"hello\".chars().rev().collect();\n```\n\nAnother way to provide the compiler with enough information, is to specify the\ngeneric type parameter:\n\n```\nlet x = \"hello\".chars().rev().collect::<Vec<char>>();\n```\n\nAgain, you need not specify the full type if the compiler can infer it:\n\n```\nlet x = \"hello\".chars().rev().collect::<Vec<_>>();\n```\n\nApart from a method or function with a generic type parameter, this error can\noccur when a type parameter of a struct or trait cannot be inferred. In that\ncase it is not always possible to use a type annotation, because all candidates\nhave the same return type. For instance:\n\n```compile_fail,E0282\nstruct Foo<T> {\n num: T,\n}\n\nimpl<T> Foo<T> {\n fn bar() -> i32 {\n 0\n }\n\n fn baz() {\n let number = Foo::bar();\n }\n}\n```\n\nThis will fail because the compiler does not know which instance of `Foo` to\ncall `bar` on. Change `Foo::bar()` to `Foo::<T>::bar()` to resolve the error.\n"},"level":"error","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":1136,"byte_end":1140,"line_start":38,"line_end":38,"column_start":59,"column_end":63,"is_primary":true,"text":[{"text":" let collected: http_body_util::Collected<Bytes> = body.collect().await","highlight_start":59,"highlight_end":63}],"label":"cannot infer type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0282]\u001b[0m\u001b[1m: type annotations needed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/handler.rs:38:59\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m38\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let collected: http_body_util::Collected<Bytes> = body.collect().await\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcannot infer type\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"type annotations needed","code":{"code":"E0282","explanation":"The compiler could not infer a type and asked for a type annotation.\n\nErroneous code example:\n\n```compile_fail,E0282\nlet x = Vec::new();\n```\n\nThis error indicates that type inference did not result in one unique possible\ntype, and extra information is required. In most cases this can be provided\nby adding a type annotation. Sometimes you need to specify a generic type\nparameter manually.\n\nIn the example above, type `Vec` has a type parameter `T`. When calling\n`Vec::new`, barring any other later usage of the variable `x` that allows the\ncompiler to infer what type `T` is, the compiler needs to be told what it is.\n\nThe type can be specified on the variable:\n\n```\nlet x: Vec<i32> = Vec::new();\n```\n\nThe type can also be specified in the path of the expression:\n\n```\nlet x = Vec::<i32>::new();\n```\n\nIn cases with more complex types, it is not necessary to annotate the full\ntype. Once the ambiguity is resolved, the compiler can infer the rest:\n\n```\nlet x: Vec<_> = \"hello\".chars().rev().collect();\n```\n\nAnother way to provide the compiler with enough information, is to specify the\ngeneric type parameter:\n\n```\nlet x = \"hello\".chars().rev().collect::<Vec<char>>();\n```\n\nAgain, you need not specify the full type if the compiler can infer it:\n\n```\nlet x = \"hello\".chars().rev().collect::<Vec<_>>();\n```\n\nApart from a method or function with a generic type parameter, this error can\noccur when a type parameter of a struct or trait cannot be inferred. In that\ncase it is not always possible to use a type annotation, because all candidates\nhave the same return type. For instance:\n\n```compile_fail,E0282\nstruct Foo<T> {\n num: T,\n}\n\nimpl<T> Foo<T> {\n fn bar() -> i32 {\n 0\n }\n\n fn baz() {\n let number = Foo::bar();\n }\n}\n```\n\nThis will fail because the compiler does not know which instance of `Foo` to\ncall `bar` on. Change `Foo::bar()` to `Foo::<T>::bar()` to resolve the error.\n"},"level":"error","spans":[{"file_name":"archipelago/src/api/handler.rs","byte_start":1136,"byte_end":1156,"line_start":38,"line_end":38,"column_start":59,"column_end":79,"is_primary":true,"text":[{"text":" let collected: http_body_util::Collected<Bytes> = body.collect().await","highlight_start":59,"highlight_end":79}],"label":"cannot infer type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0282]\u001b[0m\u001b[1m: type annotations needed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/handler.rs:38:59\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m38\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let collected: http_body_util::Collected<Bytes> = body.collect().await\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mcannot infer type\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused import: `BodyExt`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/api/rpc.rs","byte_start":127,"byte_end":134,"line_start":4,"line_end":4,"column_start":22,"column_end":29,"is_primary":true,"text":[{"text":"use http_body_util::{BodyExt, Full};","highlight_start":22,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `BodyExt`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/api/rpc.rs:4:22\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use http_body_util::{BodyExt, Full};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused variable: `manifest_path`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":2370,"byte_end":2383,"line_start":68,"line_end":68,"column_start":9,"column_end":22,"is_primary":true,"text":[{"text":" manifest_path: &str,","highlight_start":9,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"archipelago/src/container/dev_orchestrator.rs","byte_start":2370,"byte_end":2383,"line_start":68,"line_end":68,"column_start":9,"column_end":22,"is_primary":true,"text":[{"text":" manifest_path: &str,","highlight_start":9,"highlight_end":22}],"label":null,"suggested_replacement":"_manifest_path","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `manifest_path`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0marchipelago/src/container/dev_orchestrator.rs:68:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m68\u001b[0m \u001b[1m\u001b[94m|\u001b[0m manifest_path: &str,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_manifest_path`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"aborting due to 3 previous errors; 11 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m: aborting due to 3 previous errors; 11 warnings emitted\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0282, E0425.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mSome errors have detailed explanations: E0282, E0425.\u001b[0m\n"}
{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0282`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mFor more information about an error, try `rustc --explain E0282`.\u001b[0m\n"}
@@ -1 +1 @@
8a8ee46305241621
7c1c2e9173bd1c38
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":12285133733208923502,"profile":2330448797067240312,"path":758297099998481213,"deps":[[1852463361802237065,"anyhow",false,14114818479575975667],[8008191657135824715,"thiserror",false,2124363999165174421],[9614479274285663593,"serde_yaml",false,6523364242347324304],[10630857666389190470,"log",false,2562829740378362980],[12891030758458664808,"tokio",false,12639561099177907813],[13548984313718623784,"serde",false,12703564881866977758],[14757622794040968908,"tracing",false,15378798741767827401],[17249058192109047627,"archipelago_container",false,10460370172132797473]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-parmanode-8cbf688c28edc6e7/dep-lib-archipelago_parmanode","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":12285133733208923502,"profile":2330448797067240312,"path":758297099998481213,"deps":[[1852463361802237065,"anyhow",false,8031286084696237040],[8008191657135824715,"thiserror",false,16142162043116050431],[9614479274285663593,"serde_yaml",false,4384511469997886110],[10630857666389190470,"log",false,12037355621368168183],[12891030758458664808,"tokio",false,10738320512238600203],[13548984313718623784,"serde",false,14680374509786099304],[14757622794040968908,"tracing",false,15915956980741015743],[17249058192109047627,"archipelago_container",false,4808746932065906139]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-parmanode-8cbf688c28edc6e7/dep-lib-archipelago_parmanode","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1,4 +0,0 @@
{"$message_type":"diagnostic","message":"unused import: `AppManifest`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"parmanode/src/script_runner.rs","byte_start":189,"byte_end":200,"line_start":4,"line_end":4,"column_start":43,"column_end":54,"is_primary":true,"text":[{"text":"use archipelago_container::{PodmanClient, AppManifest};","highlight_start":43,"highlight_end":54}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"parmanode/src/script_runner.rs","byte_start":187,"byte_end":200,"line_start":4,"line_end":4,"column_start":41,"column_end":54,"is_primary":true,"text":[{"text":"use archipelago_container::{PodmanClient, AppManifest};","highlight_start":41,"highlight_end":54}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"parmanode/src/script_runner.rs","byte_start":174,"byte_end":175,"line_start":4,"line_end":4,"column_start":28,"column_end":29,"is_primary":true,"text":[{"text":"use archipelago_container::{PodmanClient, AppManifest};","highlight_start":28,"highlight_end":29}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"parmanode/src/script_runner.rs","byte_start":200,"byte_end":201,"line_start":4,"line_end":4,"column_start":54,"column_end":55,"is_primary":true,"text":[{"text":"use archipelago_container::{PodmanClient, AppManifest};","highlight_start":54,"highlight_end":55}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `AppManifest`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mparmanode/src/script_runner.rs:4:43\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use archipelago_container::{PodmanClient, AppManifest};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"unused variable: `container_name`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"parmanode/src/script_runner.rs","byte_start":1684,"byte_end":1698,"line_start":51,"line_end":51,"column_start":13,"column_end":27,"is_primary":true,"text":[{"text":" let container_name = format!(\"parmanode-{}\", script_name);","highlight_start":13,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"parmanode/src/script_runner.rs","byte_start":1684,"byte_end":1698,"line_start":51,"line_end":51,"column_start":13,"column_end":27,"is_primary":true,"text":[{"text":" let container_name = format!(\"parmanode-{}\", script_name);","highlight_start":13,"highlight_end":27}],"label":null,"suggested_replacement":"_container_name","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `container_name`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mparmanode/src/script_runner.rs:51:13\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m51\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let container_name = format!(\"parmanode-{}\", script_name);\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_container_name`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"fields `podman` and `scripts_dir` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"parmanode/src/script_runner.rs","byte_start":339,"byte_end":360,"line_start":11,"line_end":11,"column_start":12,"column_end":33,"is_primary":false,"text":[{"text":"pub struct ParmanodeScriptRunner {","highlight_start":12,"highlight_end":33}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"parmanode/src/script_runner.rs","byte_start":367,"byte_end":373,"line_start":12,"line_end":12,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":" podman: PodmanClient,","highlight_start":5,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"parmanode/src/script_runner.rs","byte_start":393,"byte_end":404,"line_start":13,"line_end":13,"column_start":5,"column_end":16,"is_primary":true,"text":[{"text":" scripts_dir: PathBuf,","highlight_start":5,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: fields `podman` and `scripts_dir` are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mparmanode/src/script_runner.rs:12:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct ParmanodeScriptRunner {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------------------\u001b[0m \u001b[1m\u001b[94mfields in this struct\u001b[0m\n\u001b[1m\u001b[94m12\u001b[0m \u001b[1m\u001b[94m|\u001b[0m podman: PodmanClient,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m scripts_dir: PathBuf,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"3 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 3 warnings emitted\u001b[0m\n\n"}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":12285133733208923502,"profile":6675295047989516842,"path":758297099998481213,"deps":[[1852463361802237065,"anyhow",false,9103532592662193325],[8008191657135824715,"thiserror",false,6645744484973387424],[9614479274285663593,"serde_yaml",false,15430932598686726445],[10630857666389190470,"log",false,4939831844590563600],[12891030758458664808,"tokio",false,502683732665166093],[13548984313718623784,"serde",false,4449569780738447456],[14757622794040968908,"tracing",false,4100568884566610961],[17249058192109047627,"archipelago_container",false,3018958685364502100]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-parmanode-c05a2c1fc3c3e853/dep-lib-archipelago_parmanode","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":16535072757925495226,"profile":6675295047989516842,"path":15951598443035429475,"deps":[[1852463361802237065,"anyhow",false,9103532592662193325],[8008191657135824715,"thiserror",false,6645744484973387424],[10630857666389190470,"log",false,4939831844590563600],[12891030758458664808,"tokio",false,502683732665166093],[13548984313718623784,"serde",false,4449569780738447456],[14757622794040968908,"tracing",false,4100568884566610961]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-performance-05f4b8b1bd4bd566/dep-lib-archipelago_performance","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
faa3e49f465166e0
16be0b86006863e5
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":16535072757925495226,"profile":2330448797067240312,"path":15951598443035429475,"deps":[[1852463361802237065,"anyhow",false,14114818479575975667],[8008191657135824715,"thiserror",false,2124363999165174421],[10630857666389190470,"log",false,2562829740378362980],[12891030758458664808,"tokio",false,12639561099177907813],[13548984313718623784,"serde",false,12703564881866977758],[14757622794040968908,"tracing",false,15378798741767827401]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-performance-805b444237e9f479/dep-lib-archipelago_performance","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":16535072757925495226,"profile":2330448797067240312,"path":15951598443035429475,"deps":[[1852463361802237065,"anyhow",false,8031286084696237040],[8008191657135824715,"thiserror",false,16142162043116050431],[10630857666389190470,"log",false,12037355621368168183],[12891030758458664808,"tokio",false,10738320512238600203],[13548984313718623784,"serde",false,14680374509786099304],[14757622794040968908,"tracing",false,15915956980741015743]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-performance-805b444237e9f479/dep-lib-archipelago_performance","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1,2 +0,0 @@
{"$message_type":"diagnostic","message":"unused import: `warn`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"performance/src/resource_manager.rs","byte_start":188,"byte_end":192,"line_start":6,"line_end":6,"column_start":21,"column_end":25,"is_primary":true,"text":[{"text":"use tracing::{info, warn};","highlight_start":21,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"performance/src/resource_manager.rs","byte_start":186,"byte_end":192,"line_start":6,"line_end":6,"column_start":19,"column_end":25,"is_primary":true,"text":[{"text":"use tracing::{info, warn};","highlight_start":19,"highlight_end":25}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"performance/src/resource_manager.rs","byte_start":181,"byte_end":182,"line_start":6,"line_end":6,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":"use tracing::{info, warn};","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"performance/src/resource_manager.rs","byte_start":192,"byte_end":193,"line_start":6,"line_end":6,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":"use tracing::{info, warn};","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `warn`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mperformance/src/resource_manager.rs:6:21\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use tracing::{info, warn};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":12033781174928531357,"profile":6675295047989516842,"path":5348512050007537125,"deps":[[1420800981318104879,"uuid",false,5474560211739917676],[1852463361802237065,"anyhow",false,9103532592662193325],[8008191657135824715,"thiserror",false,6645744484973387424],[10630857666389190470,"log",false,4939831844590563600],[12891030758458664808,"tokio",false,502683732665166093],[13548984313718623784,"serde",false,4449569780738447456],[14757622794040968908,"tracing",false,4100568884566610961],[15658505062885698977,"chrono",false,17627747617197588690]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-security-2826e5c8e5cbaf1e/dep-lib-archipelago_security","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
57ef5abcc4908f1c
3c92d0d2c341829c
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":12033781174928531357,"profile":2330448797067240312,"path":5348512050007537125,"deps":[[1420800981318104879,"uuid",false,9980086480018043007],[1852463361802237065,"anyhow",false,14114818479575975667],[8008191657135824715,"thiserror",false,2124363999165174421],[10630857666389190470,"log",false,2562829740378362980],[12891030758458664808,"tokio",false,12639561099177907813],[13548984313718623784,"serde",false,12703564881866977758],[14757622794040968908,"tracing",false,15378798741767827401],[15658505062885698977,"chrono",false,16457918055286614697]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-security-763ae2d9e53c6280/dep-lib-archipelago_security","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":12033781174928531357,"profile":2330448797067240312,"path":5348512050007537125,"deps":[[1420800981318104879,"uuid",false,3578758660580005844],[1852463361802237065,"anyhow",false,8031286084696237040],[8008191657135824715,"thiserror",false,16142162043116050431],[10630857666389190470,"log",false,12037355621368168183],[12891030758458664808,"tokio",false,10738320512238600203],[13548984313718623784,"serde",false,14680374509786099304],[14757622794040968908,"tracing",false,15915956980741015743],[15658505062885698977,"chrono",false,6401165642771929291]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/archipelago-security-763ae2d9e53c6280/dep-lib-archipelago_security","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1,6 +0,0 @@
{"$message_type":"diagnostic","message":"unused import: `std::collections::HashMap`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"security/src/container_policies.rs","byte_start":133,"byte_end":158,"line_start":5,"line_end":5,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"use std::collections::HashMap;","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"security/src/container_policies.rs","byte_start":129,"byte_end":160,"line_start":5,"line_end":6,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::collections::HashMap;","highlight_start":1,"highlight_end":31},{"text":"use std::path::PathBuf;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `std::collections::HashMap`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msecurity/src/container_policies.rs:5:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::collections::HashMap;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"unused import: `std::collections::HashMap`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"security/src/secrets_manager.rs","byte_start":138,"byte_end":163,"line_start":5,"line_end":5,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"use std::collections::HashMap;","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"security/src/secrets_manager.rs","byte_start":134,"byte_end":165,"line_start":5,"line_end":6,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::collections::HashMap;","highlight_start":1,"highlight_end":31},{"text":"use std::path::PathBuf;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `std::collections::HashMap`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msecurity/src/secrets_manager.rs:5:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use std::collections::HashMap;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused variable: `container_name`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"security/src/container_policies.rs","byte_start":1904,"byte_end":1918,"line_start":61,"line_end":61,"column_start":39,"column_end":53,"is_primary":true,"text":[{"text":" pub async fn apply_profile(&self, container_name: &str, profile_path: &PathBuf) -> Result<()> {","highlight_start":39,"highlight_end":53}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"security/src/container_policies.rs","byte_start":1904,"byte_end":1918,"line_start":61,"line_end":61,"column_start":39,"column_end":53,"is_primary":true,"text":[{"text":" pub async fn apply_profile(&self, container_name: &str, profile_path: &PathBuf) -> Result<()> {","highlight_start":39,"highlight_end":53}],"label":null,"suggested_replacement":"_container_name","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `container_name`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msecurity/src/container_policies.rs:61:39\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m61\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub async fn apply_profile(&self, container_name: &str, profile_path: &PathBuf) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_container_name`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"unused variable: `key`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"security/src/secrets_manager.rs","byte_start":644,"byte_end":647,"line_start":27,"line_end":27,"column_start":9,"column_end":12,"is_primary":true,"text":[{"text":" key: &str,","highlight_start":9,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"security/src/secrets_manager.rs","byte_start":644,"byte_end":647,"line_start":27,"line_end":27,"column_start":9,"column_end":12,"is_primary":true,"text":[{"text":" key: &str,","highlight_start":9,"highlight_end":12}],"label":null,"suggested_replacement":"_key","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `key`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msecurity/src/secrets_manager.rs:27:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m key: &str,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_key`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"field `encryption_key` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"security/src/secrets_manager.rs","byte_start":232,"byte_end":246,"line_start":10,"line_end":10,"column_start":12,"column_end":26,"is_primary":false,"text":[{"text":"pub struct SecretsManager {","highlight_start":12,"highlight_end":26}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"security/src/secrets_manager.rs","byte_start":279,"byte_end":293,"line_start":12,"line_end":12,"column_start":5,"column_end":19,"is_primary":true,"text":[{"text":" encryption_key: Vec<u8>, // In production, derive from user password","highlight_start":5,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: field `encryption_key` is never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msecurity/src/secrets_manager.rs:12:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct SecretsManager {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m--------------\u001b[0m \u001b[1m\u001b[94mfield in this struct\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m secrets_dir: PathBuf,\n\u001b[1m\u001b[94m12\u001b[0m \u001b[1m\u001b[94m|\u001b[0m encryption_key: Vec<u8>, // In production, derive from user password\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"5 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 5 warnings emitted\u001b[0m\n\n"}
@@ -1 +1 @@
ca759ec48935240e
20f9e36c22c0730b
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":5116616278641129243,"profile":3033921117576893,"path":870145482350057297,"deps":[[4289358735036141001,"proc_macro2",false,8738428300887966146],[6100504282945712449,"quote",false,3112595355771557811],[6490058671768129134,"syn",false,13095024218373907080]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/async-trait-df27c648dd031e6c/dep-lib-async_trait","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":5116616278641129243,"profile":3033921117576893,"path":6257994815181598460,"deps":[[4289358735036141001,"proc_macro2",false,17533208014675963697],[6100504282945712449,"quote",false,15856729484659742064],[6490058671768129134,"syn",false,18340396050213867881]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/async-trait-df27c648dd031e6c/dep-lib-async_trait","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
4c30df4b39cad4aa
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[\"portable-atomic\"]","target":14411119108718288063,"profile":5347358027863023418,"path":2424142456867242040,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/atomic-waker-b00b8c6ed7a28185/dep-lib-atomic_waker","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
a6b3eceab8f05e0c
3ab7d815dc763b7f
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[\"portable-atomic\"]","target":14411119108718288063,"profile":8276155916380437441,"path":17078785543540177655,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/atomic-waker-ea44e3625ec8e406/dep-lib-atomic_waker","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[]","declared_features":"[\"portable-atomic\"]","target":14411119108718288063,"profile":8276155916380437441,"path":2424142456867242040,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/atomic-waker-ea44e3625ec8e406/dep-lib-atomic_waker","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
8a90a1c6772e725f
b83deee3f57aec6d
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":6962977057026645649,"profile":3033921117576893,"path":5416994353804758337,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/autocfg-eb1adbf7d7f824ab/dep-lib-autocfg","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[]","declared_features":"[]","target":6962977057026645649,"profile":3033921117576893,"path":4314497852873962378,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/autocfg-eb1adbf7d7f824ab/dep-lib-autocfg","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
b3f9fcb023727b15
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":5347358027863023418,"path":6019877073480158927,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/base64-004e2ed793f4db62/dep-lib-base64","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
7d9ac55e7ce6e509
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":5347358027863023418,"path":4636731613757228726,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/base64-5d57c3489a1b1f3f/dep-lib-base64","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
028a5c187981a723
eef7b093a796474f
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":8276155916380437441,"path":9635661396335514030,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/base64-9c9a253673e9c296/dep-lib-base64","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":8276155916380437441,"path":6019877073480158927,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/base64-9c9a253673e9c296/dep-lib-base64","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
1c4226d18af2eae3
c321aa14857d3a1c
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":8276155916380437441,"path":16134992393303793529,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/base64-ccb9d3fae9326ecd/dep-lib-base64","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":8276155916380437441,"path":4636731613757228726,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/base64-ccb9d3fae9326ecd/dep-lib-base64","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
51163167aaafaff1
@@ -0,0 +1 @@
{"rustc":2833068300835136146,"features":"[\"default\", \"getrandom\", \"std\", \"zeroize\"]","declared_features":"[\"alloc\", \"default\", \"getrandom\", \"js\", \"std\", \"zeroize\"]","target":15699326785376903934,"profile":5347358027863023418,"path":5443424523588571247,"deps":[[11023519408959114924,"getrandom",false,7623097236041421085],[12865141776541797048,"zeroize",false,3505545465329179073],[13077212702700853852,"base64",false,713229537848433277],[14723042243959528973,"blowfish",false,2415705861992497651],[17003143334332120809,"subtle",false,11891067520574013302]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bcrypt-3c332d42787d136f/dep-lib-bcrypt","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
32aa51bece5543bf
ec589b6cf4d61d31
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[\"default\", \"getrandom\", \"std\", \"zeroize\"]","declared_features":"[\"alloc\", \"default\", \"getrandom\", \"js\", \"std\", \"zeroize\"]","target":15699326785376903934,"profile":8276155916380437441,"path":3504922084642754590,"deps":[[11023519408959114924,"getrandom",false,18097984327831170862],[12865141776541797048,"zeroize",false,13083827682612569491],[13077212702700853852,"base64",false,16423205669188289052],[14723042243959528973,"blowfish",false,15280709330531252836],[17003143334332120809,"subtle",false,3195544405082049177]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bcrypt-3c4230a1a3e05cbe/dep-lib-bcrypt","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[\"default\", \"getrandom\", \"std\", \"zeroize\"]","declared_features":"[\"alloc\", \"default\", \"getrandom\", \"js\", \"std\", \"zeroize\"]","target":15699326785376903934,"profile":8276155916380437441,"path":5443424523588571247,"deps":[[11023519408959114924,"getrandom",false,5079690216925881593],[12865141776541797048,"zeroize",false,12458256706971170947],[13077212702700853852,"base64",false,2034076192242016707],[14723042243959528973,"blowfish",false,10935193504803766853],[17003143334332120809,"subtle",false,3330155987509502453]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bcrypt-3c4230a1a3e05cbe/dep-lib-bcrypt","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -1 +1 @@
13e13cb07a4b52e8
c8b0caefb9cd2d48
@@ -1 +1 @@
{"rustc":2833068300835136146,"features":"[\"default\"]","declared_features":"[\"compiler_builtins\", \"core\", \"default\", \"example_generated\", \"rustc-dep-of-std\"]","target":12919857562465245259,"profile":8276155916380437441,"path":9629406506226843984,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-1a6964329366026c/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
{"rustc":2833068300835136146,"features":"[\"default\"]","declared_features":"[\"compiler_builtins\", \"core\", \"default\", \"example_generated\", \"rustc-dep-of-std\"]","target":12919857562465245259,"profile":8276155916380437441,"path":8476643089963189356,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-1a6964329366026c/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
9c26535a816dac0c

Some files were not shown because too many files have changed in this diff Show More