MEDIUM. The run executed ~16 tickets over many hours before the host died; nothing bounded total resource use or detected the stall. Add: a memory/again-concurrency cap appropriate to the host, a heartbeat/watchdog that flags when the run goes quiet (the orchestrator-silent failure mode), and a checkpoint so a crashed run is cheaply resumable (the engine already supports resumeFromRunId; make the operator path obvious). Pairs with the pre-flight baseline gate (#2) and post-run reconciliation (#5/#6).
Filed 2026-06-16 after the delivery-train host OOM crash mid-run (CDP/Chrome memory leak + no agent resource cleanup). The run had ~12 orphaned --remote-debugging-port=9222 Chrome procs (~1GB, reparented to systemd-user, 12h old) and ~7 leftover git worktrees that were never reaped — host ran out of memory and stalled, killing the workflow ~16/18 tickets in.
MEDIUM. The run executed ~16 tickets over many hours before the host died; nothing bounded total resource use or detected the stall. Add: a memory/again-concurrency cap appropriate to the host, a heartbeat/watchdog that flags when the run goes quiet (the orchestrator-silent failure mode), and a checkpoint so a crashed run is cheaply resumable (the engine already supports
resumeFromRunId; make the operator path obvious). Pairs with the pre-flight baseline gate (#2) and post-run reconciliation (#5/#6).Filed 2026-06-16 after the delivery-train host OOM crash mid-run (CDP/Chrome memory leak + no agent resource cleanup). The run had ~12 orphaned
--remote-debugging-port=9222Chrome procs (~1GB, reparented to systemd-user, 12h old) and ~7 leftover git worktrees that were never reaped — host ran out of memory and stalled, killing the workflow ~16/18 tickets in.