In concore_cli/commands/stop.py, the Windows kill path uses check=False and never looks at the return code:
subprocess.run(['taskkill', '/F', '/PID', str(pid)],
capture_output=True,
check=False) # never raises
console.print(f" ✓ Stopped {name}") # always prints success
killed_count += 1 # always counts as killed
On POSIX, a failed terminate() raises TimeoutExpired which gets caught and escalated to kill(). There's actual feedback.
On Windows, if taskkill fails (Access Denied, PID not found, protected process), execution falls through silently and the user sees "Successfully stopped all N process(es)" when nothing was actually stopped.
The fix is straightforward: check result.returncode != 0 and raise or log accordingly, thx
In concore_cli/commands/stop.py, the Windows kill path uses check=False and never looks at the return code:
On POSIX, a failed terminate() raises TimeoutExpired which gets caught and escalated to kill(). There's actual feedback.
On Windows, if taskkill fails (Access Denied, PID not found, protected process), execution falls through silently and the user sees "Successfully stopped all N process(es)" when nothing was actually stopped.
The fix is straightforward: check result.returncode != 0 and raise or log accordingly, thx