pub fn run(opts: RunOptions) -> SetupResult<SetupReport>Expand description
Simplified pipeline: lock → scan → install all embedded seeds → setup-state → report.
This is a synchronous function — all operations (lock, scan, install, state write)
are blocking. If called from an async context, use tokio::task::spawn_blocking.