The 2s poll queried Postgres nonstop, so Railway never saw the API idle for 10 minutes and never slept it. publishEvent now sends pg_notify, delivered on commit; the outbox drains on notification, once at boot, and every 15 minutes to retry failures.