Marked as helpful by the asker
Let it write them, never let it run them unattended. Three guardrails that cost nothing:
DROPandALTER ... TYPErequire a comment explaining why, enforced by a tiny CI grep.- Every migration runs against a copy of production first (
pg_dump→ local → migrate → smoke test). - Ask Cursor for the down migration too. If it cannot write the down, the up is destructive.
Reading migrations is the one place where slow is correct.