40478dd2aa
On MariaDB (no transactional DDL) a half-applied prior run left purchases.warehouse_id committed without recording the migration. On retry it failed with "Duplicate column name 'warehouse_id'", which aborted the migrate run and blocked every later migration (notifications, push, online store, pricing, labor templates, tire, subcontractor, bodyshop) — so those tables were never created (e.g. bodyshop_jobs missing → 500 on tenant pages). Guard each step with Schema::hasColumn / hasTable so the migration completes on re-run and unblocks the rest of the batch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>