* fix: verify PID belongs to hapi before treating runner as alive
After OS upgrade, stale runner.state.json PID can be reused by unrelated
processes. The old kill(pid, 0) check passes for any process, causing
start-sync to loop with 'Runner already running' indefinitely.
Now uses ps/wmic to confirm the process command line contains 'hapi'
before considering the runner alive. Falls back to alive-only check if
ps/wmic fails.
* fix: precise runner process detection and wmic fallback
* fix: add fallback for ps failure in non-Windows branch