pub async fn run_daemon<D: DaemonDispatch>(dispatcher: D) -> Result<()>Expand description
Run the daemon: bind the socket, warm in the background, serve request frames until SIGTERM/SIGINT.
Fatally acquires its own startup lock, which only protects
cleanup→bind→pid-write — dispatcher has already run migrations and
applied pack schema plans while constructing itself, unguarded. Production
boot must go through run_daemon_with_boot_guard instead, which extends
the same lock back over construction. This entry point is for callers
(and tests) that build the dispatcher and start serving as one atomic
step with no separate boot-guard window to protect.