You've already forked agentic-coding-workflow
cf1ec7b1c6
Final cross-cutting review finding: shutCtx was shared between server.Shutdown and dispatcher.Shutdown, with jobs.Stop's wall-clock time burning the budget in between. Under load, dispatcher.Shutdown could receive an already-dead ctx and skip draining in-flight async notify dispatches (including webhook enqueues). Mirror the errCh branch by creating a fresh 10s drainCtx for dispatcher.Shutdown.