From cbe6282263afb0617d226540563d8d3d3ce6964c Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Tue, 10 Mar 2026 14:17:59 -0400 Subject: [PATCH] Flip arc doctor default to live mode with --dry-run opt-out Live service probes now run by default instead of requiring --live. Added --dry-run flag to skip probes when needed. Install command now runs doctor with live probes to validate setup. Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/crates/arc-cli/src/doctor.rs | 7 +------ lib/crates/arc-cli/src/install.rs | 2 +- lib/crates/arc-cli/src/main.rs | 10 +++++----- lib/crates/arc-cli/tests/cli.rs | 4 ++-- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/lib/crates/arc-cli/src/doctor.rs b/lib/crates/arc-cli/src/doctor.rs index 435f1e615..7999d907f 100644 --- a/lib/crates/arc-cli/src/doctor.rs +++ b/lib/crates/arc-cli/src/doctor.rs @@ -1196,12 +1196,7 @@ pub async fn run_doctor(verbose: bool, live: bool) -> i32 { checks, }; - let footer = if !live { - Some("Run with --live to probe service connectivity.") - } else { - None - }; - print!("{}", report.render(&styles, verbose, footer)); + print!("{}", report.render(&styles, verbose, None)); if report.has_errors() { 1 diff --git a/lib/crates/arc-cli/src/install.rs b/lib/crates/arc-cli/src/install.rs index ffe260b65..4e8ad4991 100644 --- a/lib/crates/arc-cli/src/install.rs +++ b/lib/crates/arc-cli/src/install.rs @@ -451,7 +451,7 @@ pub async fn run_install() -> Result<()> { if run_doctor { eprintln!(); - doctor::run_doctor(true, false).await; + doctor::run_doctor(true, true).await; } eprintln!(); diff --git a/lib/crates/arc-cli/src/main.rs b/lib/crates/arc-cli/src/main.rs index b8fff7c7b..a69dd9890 100644 --- a/lib/crates/arc-cli/src/main.rs +++ b/lib/crates/arc-cli/src/main.rs @@ -82,9 +82,9 @@ enum Command { #[arg(short, long)] verbose: bool, - /// Probe live services (LLM, sandbox, API, web, Brave Search) - #[arg(short, long)] - live: bool, + /// Skip live service probes (LLM, sandbox, API, web, Brave Search) + #[arg(long)] + dry_run: bool, }, /// Initialize a new arc project Init, @@ -381,10 +381,10 @@ async fn main_inner() -> Result<()> { Box::leak(Box::new(arc_util::terminal::Styles::detect_stderr())); arc_api::serve::serve_command(args, styles).await?; } - Command::Doctor { verbose, live } => { + Command::Doctor { verbose, dry_run } => { let cli_config = cli_config::load_cli_config(None)?; let verbose = verbose || cli_config.verbose; - let exit_code = doctor::run_doctor(verbose, live).await; + let exit_code = doctor::run_doctor(verbose, !dry_run).await; std::process::exit(exit_code); } Command::Init => { diff --git a/lib/crates/arc-cli/tests/cli.rs b/lib/crates/arc-cli/tests/cli.rs index c9b45f561..7f8d8fd9b 100644 --- a/lib/crates/arc-cli/tests/cli.rs +++ b/lib/crates/arc-cli/tests/cli.rs @@ -679,9 +679,9 @@ fn doctor_no_color_when_no_color_set() { } #[test] -fn doctor_live_flag_accepted() { +fn doctor_dry_run_flag_accepted() { arc() - .args(["--no-dotenv", "doctor", "--live"]) + .args(["--no-dotenv", "doctor", "--dry-run"]) .env_clear() .assert() .stdout(predicate::str::contains("Arc Doctor"));