Files
rust-xmpp/docs/VALIDATION-0.8.0.md
T
wt 7f60661eef - MUC сохраняет согласованный журнал конфигурации, affiliations, nick,
ролей,
  членства и ограниченной истории без MAM. Изменение фиксируется до
  публикации
  ответа; при ошибке записи состояние комнаты откатывается.
- Crash recovery использует последнее сохранённое поколение после
  SIGKILL,
  включая временные комнаты. Heartbeat обновляет живое членство;
  ожидающие записи сохраняют исходный deadline через повторные
  перезапуски.
  `muc_recovery_grace_period`: по умолчанию 300 секунд, пределы
  1..604800.
- Подтверждённые выходы, смена nick, ролей и политик комнаты не
  заменяются
  старой записью восстановления. Native config/state остаются экспортом
  для
  Prosody; согласованное восстановление Rust использует собственный
  sidecar.
- Исправлены MUC probe, неизвестные типы presence, вход без MUC `<x/>`,
  ошибки
  доставки и статус 333. Обычные presence extensions сохраняются в живом
  обмене; поддельная MUC identity фильтруется. `subject` вместе с `body`
  либо
  `thread` не изменяет тему комнаты.
- Подключены `muc_max_rooms`, `restrict_room_creation`, политики
  регистрации
  и зарегистрированного nick, `muc_tombstone_expiry`; добавлены
  встроенные
  административные ad-hoc команды уничтожения комнат и изменения
  affiliation.
- Hub сохраняет resumable XEP-0198 сессии, счётчики и очередь. Resume
  после
  перезапуска доступен на новом TLS/SASL-транспорте через legacy SASL и
  SASL2.
  Действующие приватные SM-записи восстанавливают логические сессии и
  MUC
  до открытия listeners: offline-доставка попадает в очередь,
  синтетический
  join и история повторно не отправляются. SM resume не требует
  дополнительной
  available presence; без SM восстановление MUC требует новой
  аутентификации
  точного полного JID и available presence либо явного MUC-входа.
  Входящий handled-счётчик обновляется после обработки. Сокеты TCP/TLS
  не сохраняются; неопределённая сетевая отправка допускает повторную
  доставку.
- Известные встроенные MUC-возможности Prosody отображаются на
  Rust-реализацию.
  Произвольные Lua/community-модули не исполняются; неизвестные явно
  включённые
  MUC-модули отклоняются при запуске. Общие и host `modules_disabled`
  учитываются
  для vCard и occupant-id.

Порядок восстановления, ограничения хранения и отката на Prosody:
[docs/MUC-RECOVERY.md](docs/MUC-RECOVERY.md).

Проверка: 293 Rust tests, Clippy/fmt/release, полный сетевой прогон, 500
TLS
MUC+SM ресурсов с SIGKILL/resume и native reference — успешно.
Подробности: [docs/VALIDATION-0.8.0.md](docs/VALIDATION-0.8.0.md).
2026-10-20 17:34:43 +07:00

4.9 KiB
Raw Blame History

Проверка 0.8.0

Linux x86_64, Rust1.99.1, 2026-10-20. Итоговый полный прогон: verify.txt. Структурированный отчёт: validation-results.json.

Проверка Результат
Rust tests 293 passed, 0 failed, 11 ignored
fmt / Clippy all-targets -D warnings / release Успешно
MUC SIGKILL через настоящий STARTTLS temporary/persistent комнаты, несколько ресурсов, show/status/roles, порядок истории, подтверждённые leave/kick/demotion/password/config, фиксированный/custom grace — успешно
SM между процессами SIGKILL/SIGTERM, legacy SASL/SASL2, counters, ack/replay, неверные owner/token/h, resource conflict — успешно
MUC offline fanout До аутентификации Bob новое сообщение Alice уже в приватной durable SM-очереди; после resume доставка без history delay — успешно
Отзыв SM Удаление аккаунта подтверждается; после повторного создания старый SM-токен отклоняется
MUC+SM нагрузка 100 аккаунтов, 500 TLS-ресурсов, 10 комнат, 25000 join presence; SIGKILL и resume представителей всех комнат — успешно
Native reference 8 module/storage + 1 TLS/SASL EXTERNAL federation — успешно
Остальные сетевые регрессии Android SASL, WSS/BOSH/proxy/altconnect, PEP/push/preauth, resource policies, upload/S3/migration — успешно

Нагрузка MUC+SM: connect 5.193 с; join 46.703 с; полный сценарий 78.857 с; выборочный peak RSS 41.26 MiB. Детали fanout, CPU, slots и replay: muc-sm-load.json. Это loopback smoke measurement, а не гарантия production capacity.

SHA-256 итоговой release-сборки: 74882319fcb467dd1e1813ab61e85441ffd3dae2f9f7961b28fd98ec5da7c89a. Основной прогон: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh; native env описан в scripts/prosody_compat/README.md. В этой среде дополнительно применены CARGO_INCREMENTAL=0, CARGO_PROFILE_DEV_DEBUG=0, CARGO_PROFILE_TEST_DEBUG=0.

Первый основной прогон остановился на пятисекундном readiness timeout нового нагрузочного теста после успешных обычных и сетевых проверок. В самом тесте таймаут увеличен до60секунд; нагрузка500 повторена с той же release-сборкой, а native-проверки выполнены отдельно. verify.txt объединяет успешные части этих запусков; первоначальный лог сохранён в initial-load-timeout.txt.

В процессе проверки исправлены потеря сохранённых presence/history, защита истёкших recovery claims, отсутствие успешного ответа при удалении аккаунта, учёт stanza до SM enable и потеря MUC fanout до подключения другого участника. Первоначальный тест последнего случая принимал позднюю историю за доставку; итоговый тест проверяет именно private pending queue до аутентификации.

Реальные TCP/TLS-сокеты после завершения процесса отсутствуют: требуется новое защищённое аутентифицированное соединение. SM допускает повторную доставку при неопределённом сетевом результате; это не exactly-once транзакция между всеми хранилищами и сетью. Известные встроенные возможности MUC перенесены, произвольные community Lua-модули не исполняются. Пределы записей и порядок восстановления: MUC-RECOVERY.md. Полная замена всей установки и проверка реальными клиентами этим не заявляются: COMPATIBILITY.md.

10GiB upload в0.8.0 не повторялся. Исторические испытания local/MinIO находятся в VALIDATION-0.7.8.md и VALIDATION-0.7.9.md; их результаты не приписываются новой сборке.