POST /api/caddy/routes now returns 409 if the hostname already exists, preventing duplicate DB entries that cause Caddy's "ambiguous site definition" error. loadCaddyRoutes uses Promise.allSettled so a failure in the status check can no longer silently prevent the routes list from loading.