Fixes E0382 borrow-after-move error: wait_with_output() consumed the child handle, making child.kill() in the timeout branch invalid. Use kill_on_drop(true) with cmd.output() instead.
Adopted from #3748 by @ilyasubkhankulov with fixes: - Removed unused _runtime field - Fixed subprocess timeout handling - Excluded unrelated Slack threading and Dockerfile changes Closes #3748 (superseded)