Провод: имена событий

Last updated: 2026-09-05Событие — свершившийся факт, а не команда. Закрытый словарь причастий, форма сабджекта и почему живое имя не переименовывают.

Провод

Событие — свершившийся факт, а не команда. Сабджект читается как предложение в прошедшем времени: v1.{домен}.{предмет}.{что произошло}.

v1.user.email.verified        не  v1.user.verifyEmail
v1.billing.invoice.paid           v1.billing.payInvoice
v1.iam.role.granted               v1.iam.grantRole

Разница не косметическая. Команду адресуют исполнителю, факт публикуют в никуда. Имя в повелительном наклонении обещает, что кто-то обязан его выполнить, — и первый же сервис, подписавшийся «просто посмотреть», превращает шину в скрытый RPC: у события появляется адресат, без которого система перестаёт работать, но нигде это не записано.

Закрытый словарь причастий

Причастие берётся из списка (event_verbs) по тем же соображениям, что и словарь глаголов в коде: updated и changed не должны означать одно и то же в разных доменах.

activated added approved archived banned cancelled changed created decided deleted
enrolled executed expired failed followed granted liked normalized paid played
published purchased read refunded registered removed requested restored revoked
scanned submitted unlocked updated uploaded verified

Составной хвост допустим, если причастие остаётся последним словом: v1.family.memberAdded, v1.iam.role.statusChanged.

Живое имя не переименовывают

На сабджект подписаны работающие консьюмеры, и правка имени — не рефакторинг, а миграция: новый сабджект, оба публикуются какое-то время, потребители переезжают, старый снимается. Поэтому имя выбирают один раз и правильно — и поэтому проверка на форму стоит в CI, а не в чьей-то голове.

Провод: имена событий | AS Docs