From 1b92dbcb1d0c9871d206cb740659f19ad7235a3c Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 14 May 2026 14:55:24 +0100 Subject: [PATCH] fix(cli): make `start` refuse explicitly instead of silent-exiting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #54. `verisimiser start` previously parsed the manifest, printed three status lines, then returned `Ok(())` because the interception daemon (V-L1-C1, #46) hasn't been built. That looks like a successful start, which is worse than not having the subcommand at all — anyone running `verisimiser start` would assume their database is being augmented when nothing is happening. Replace the print-and-exit with `anyhow::bail!` that: - still loads the manifest (so config errors surface) - names the tracking issue (#46 / V-L1-C1) in the error message - exits non-zero, so shell scripts and CI gates notice This is option (a) from the issue: refuse with a typed error. Once the interception daemon lands in V-L1-C1, the bail can be replaced with the actual daemon loop. Co-Authored-By: Claude Opus 4.7 --- src/main.rs | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 534eaeb..6462144 100644 --- a/src/main.rs +++ b/src/main.rs @@ -133,21 +133,18 @@ fn main() -> Result<()> { } Commands::Start { manifest } => { - let m = manifest::load_manifest(&manifest)?; - let name = if !m.project.name.is_empty() { - &m.project.name - } else { - &m.verisimiser.name - }; - let backend = m.database.effective_backend(); - println!( - "Starting VeriSimiser augmentation for {} ({})", - name, backend + // Load the manifest so config errors still surface, but refuse + // to claim we started the daemon. The interception daemon is + // tracked by V-L1-C1 (hyperpolymath/verisimiser#46); until it + // lands, an explicit refusal is less misleading than a silent + // print-and-exit that implies the augmentation is running. + let _m = manifest::load_manifest(&manifest)?; + anyhow::bail!( + "verisimiser start: the augmentation daemon is not yet \ + implemented. Manifest at {} parsed successfully, but no \ + interception is running. Tracked by V-L1-C1 (issue #46).", + manifest ); - println!(" Octad: {}/8 dimensions enabled", m.octad.enabled_count()); - println!(" Sidecar: {} ({})", m.sidecar.path, m.sidecar.storage); - // TODO: start interception daemon - Ok(()) } Commands::Drift {