dataset_review_sessions (and potentially other tables in FK_DEFS) are created at runtime by init_db() → Base.metadata.create_all(), not by Alembic migrations. On fresh databases, these tables don't exist when migrations run, causing ALTER TABLE to crash. Fix: check table existence before operating on each FK. If a table doesn't exist, create_all() will create it with the correct FK definition (the model already has ondelete='CASCADE'). This is the same pattern used by other migrations (9f8e7d6c5b4a, ed28d34edde7, c9d8e7f6a5b4, 86c7b1d6a710) for create_all()-only tables like llm_providers, roles, validation_policies, llm_validation_results.
Generic single-database configuration.