Зачем: владелец пометил N13 как «не воспроизведено», а в коде окно гонки (SELECT ... FOR UPDATE по отсутствующей строке, затем INSERT ... ON CONFLICT DO NOTHING со своим runId) видно. Нужен повторяемый замер на живом сервере и реальной PostgreSQL 17, а не рассуждение. Что: scripts/test/n13-race.mjs — 10/25/50 параллельных первых POST /payroll/calculate, каждая попытка на новой точке, проверка статусов, числа run_id, строк в staff_payroll_runs и «фантомных» run_id. Режим as-is показывает, что сейчас всё упирается в N2 (500). Режим n2-bypass ставит DEFAULT now() только в одноразовой БД скрипта (продукт и миграции не меняются), чтобы увидеть саму гонку. Итог: 0 некорректных из 30 попыток; причина (из кода) — случайная сериализация через upsert ensureDefaultPayRules. Это записано в NOTES-FOR-EXECUTORS вместе с рекомендацией явной блокировки и замечанием об утечке текста ошибок БД в 500.
0 lines
Text
0 lines
Text