One thing I'd add to the deploy checklist: Supervisor keeps your queue workers alive across reboots, but it does not restart them when you ship new code. We learned this on a dashboard app: after a deploy, the workers kept running the old release's code, so a queued report job referenced a column we had just renamed and failed quietly for the better part of a day. Now every deploy ends with php artisan queue:restart, which signals the workers to finish their current job and exit so Supervisor boots them on the new code. It's one line, but it closes the gap between "deployed" and "actually running the new code".