§11.5 требует, чтобы каждое мутирующее действие писалось в журнал сервера
с `actor.instance_admin=true`, но у PATCH /guilds/{id},
PATCH /guilds/{id}/members/{user_id} и у ручек комнат вызова `recordAudit`
не было: переименование сервера, смена ника, тайм-аут и создание, правка и
удаление комнаты не оставляли следа ни у владельца, ни у инстанс-админа.
- guild.update, member.update, member.timeout (в причине — срок тайм-аута),
channel.create, channel.update, channel.delete;
- Go-тест TestAuditCoversGuildMemberAndChannelChanges проверяет записи на
чужом сервере и флаг actor_instance_admin, а также что действие владельца
этим флагом не помечается;
- e2e 19b в instance-admin.spec.ts включён вместо test.fixme с диагностикой.
Проверки: go test -tags sqlite_fts5 -race -count=1 ./internal/... — ok;
make go-lint — 0 issues; живьём на стенде тест 19b проходит.
Чек-лист §11.5 проверялся отдельными скриптами и живьём, но в спеках его
не было. Новый файл (`GLCHAT_E2E_INSTANCE=1`) работает на сервере, где
админ не участник: владелец — `rtprobe`, участник — `rtprobe2`.
- 14: видимость — чужой приватный сервер в `GET /instance/guilds` и в
списке серверов админа, комнаты, история, поиск, участники, роли, баны,
инвайты, эмодзи, звуки, вебхуки, аудит; чужие DM по-прежнему 404;
- 15: управление без 403 — имя сервера, ник владельца, роли (создание,
поднятие выше своей, выдача и снятие), комнаты; аудит помечает действия
`actor_instance_admin=true`;
- 16: модерация — бан с причиной и автором, разбан, кик, тайм-аут; попытки
владельца кикнуть/забанить/замутить/лишить роли админа дают 403
`instance.admin_protected`;
- 17: обход лимитов — slowmode, приватность комнаты, лимит участников
голосовой комнаты;
- 18: UI — админ входит в чужой приватный сервер из рейки без инвайта,
пишет в приватную комнату, а участник видит переименование и кик без
перезагрузки;
- 19: аудит — прежние записи не затираются; 19b (`test.fixme`) фиксирует
пробел: переименование сервера, ник и комнаты в аудит не пишутся;
- 20: безопасность не обходится — step-up на свежей сессии, чужой Origin,
лимит реакций 429.
Уборка тестовых серверов — в `finally` от имени админа (удаление чужого
сервера требует step-up).