A schema dump is a starting point, not a migration

Squashing two hundred migrations into a schema dump takes forty seconds off every test run, and it introduces a second source of truth that has to be kept in step.

$ php artisan schema:dump --prune

$ ls database/
schema/mysql-schema.dump
migrations/2020_09_14_add_tax_scheme.php    # anything newer

# what the dump does NOT contain:
#   the migrations table rows for what it replaced —
#   Laravel inserts those, so a fresh install is consistent

The dump is raw mysqldump output, so it is engine-specific — a project testing against SQLite and deploying to MySQL cannot use it, which is a decent argument for testing against the engine you deploy to. It has to be regenerated deliberately once new migrations accumulate, and forgetting is harmless until somebody counts the files again. Committing it means schema changes now appear twice in a diff, which is noise worth accepting.