Under the hood
Runner child processes gain max-lifetime and terminating lifecycle callbacks.
The self-hosted runner's child process spawn now wires up onMaxLifetime and onChildTerminating callbacks alongside the existing onChildLifecycle/onChildInit, so the runner can react when a session hits a max lifetime limit or when a child begins terminating.