# Backend migrations Goose migrations embedded into the backend binary by `embed.go`. Applied at startup before any listener opens (see `internal/postgres`). ## Pre-production single-file rule **While the platform is not yet in production, every schema change goes into the existing `00001_init.sql` file** rather than a new `00002_*`-prefixed file. The intent is to keep the schema in one canonical place so reviewers and developers do not have to reconstruct the latest shape from a chain of incremental migrations. Operationally this means that pulling a branch with schema changes requires a fresh database — the only consumer today is local development and integration tests, both of which spin up disposable Postgres instances. > **Remove this rule before the first production deployment.** From > that point on every schema change must be a new migration file with a > monotonically increasing prefix, and `00001_init.sql` becomes > immutable history. If you need to make a change, edit `00001_init.sql` directly. Down migrations should still be kept in sync (they live at the bottom of the file — currently a single `DROP SCHEMA backend CASCADE`).