- new run status 'cancelled'; stop button on pipeline detail and run detail
pages (SIGTERM, SIGKILL after 5s, stage-boundary cancel checks)
- POST /api/runs/[id]/stop; works for in-process runs and orphans (by pid)
- startup reconciliation via instrumentation.ts register(): SIGTERM live
orphan sling/atlas processes (mark cancelled), mark dead-pid stale runs
failed; appends a note to the run log
- previously: exiting the server left sling running orphaned and the run
stuck at 'running' forever