- sql_migration._split_statements узнаёт только $tag$, пустой $$ ломал разбиение:
DO $$ … $$ → DO $do$ … $do$.
- test_form_phases_delete_removes_only_named_phase: ?sheet= без direction
фильтрует direction IS NULL — читаем весь список и отбираем AHR в тесте.
- test_form_phases_duplicate_without_direction_rejected: после ошибки
сессия клиента откатывается, число строк не проверяем; защиту БД
проверяет новый test_form_phase_nodir_unique_index_blocks_duplicate.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>