summary.kill = await server.stop({ signal: 'SIGKILL' }); assert.equal(summary.kill.signal, 'SIGKILL', 'The entire server must die from SIGKILL'); assert.equal(summary.kill.pid, summary.beforeServer.pid, 'The killed process must be the original Golem server'); await save('kill.json', summary.kill); emit('killed', { pid: summary.kill.pid, runtimeEvidence: { ...inFlightRuntimeEvidence, phase: 'killed', signal: summary.kill.signal, } }); await options.beforeRestart?.({ runId, agentId, serverPid: summary.kill.pid, evidence: inFlightEvidence }); summary.afterServer = await server.start({ evidenceDir, label: 'after', timeoutMs: options.startupTimeoutMs ?? 180_000 }); assert.notEqual(summary.beforeServer.pid, summary.afterServer.pid, 'Server process identity must change'); await save('server-after.json', summary.afterServer); emit('restarted', { pid: summary.afterServer.pid, runtimeEvidence: { ...inFlightRuntimeEvidence, phase: 'restarted', newPid: summary.afterServer.pid, } }); const recovered = await cli.invoke(agentId, 'run', { idempotencyKey: runId, timeoutMs: 90_000 }); await save('recovered-invocation.json', recovered);