#559

fix(cli): confirm clean, report its failures, and only prune what portless owns

Openlahfirwants to merge intofrom
  1. clean ran without a preview and printed "Clean finished." after failed steps, prune removed routes before killing anything and signalled any process on a route's port, and service removal ignored failed stop commands.
  2. clean now shows its plan, asks for confirmation or --yes, and exits 1 when a step fails; prune removes stale routes and their shares, never kills a process it cannot tie to the route, and keeps a route for prune --force when its own process ignores SIGTERM; failed service stop steps are reported.
  3. Builds on #558. Related to #369 and #540.