Files
rust-xmpp/docs/validation-results-0.7.7.json
T
wt b30fc524d8 - Offline CLI `upload-migrate OLD_CONFIG NEW_CONFIG --component HOST
[--execute]`: dry run по умолчанию, local ↔ S3 и S3 ↔ S3 без удаления
  source.
- Последовательное копирование с проверкой размера и полным SHA-256
  readback
  destination; конфликтующий объект не перезаписывается. Временный диск
  —
  максимум один переносимый файл дополнительно к постоянному
  destination.
- Durable migration journal позволяет продолжить прерванную операцию с
  теми
  же конфигурациями. Незавершённый или повреждённый journal блокирует
  startup;
  backend identity меняется только после проверки всех файлов.
- Native `uploads`/`upload_stats`, slots и JWT сохраняются;
  поддерживаются
  native локальные файлы без Rust completion sidecar. Миграция требует
  остановки RustXMPP и Prosody, использующих общий `data_path`.
- Multipart intent сохраняется до создания удалённого upload. Recovery
  находит потерянный UploadId через paginated listing и очищает только
  точный
  key принадлежащего slot. При сохранных metadata cleanup не зависит от
  lifecycle; lifecycle остаётся дополнительной защитой, а не гарантией.
- Перед completion сохраняется durable marker. Неопределённый результат
  completion при отсутствии подтверждённого объекта помещает только этот
  slot в quarantine: PUT 409, retention не удаляет его, maintenance
  повторяет
  сверку. Startup продолжается; сохраняется single-use семантика.
- Добавлены network regressions миграции и расширены проверки multipart
  recovery, потерянных ответов, отмены запросов и конфликтов
  destination.

Настройка, команды миграции, recovery и ограничения отката:
[docs/HTTP-UPLOAD.md](docs/HTTP-UPLOAD.md).

Команды, результаты и границы подтверждения, включая qualification
реального
object store и 10 GiB:
[docs/VALIDATION-0.7.9.md](docs/VALIDATION-0.7.9.md).

Итог: 265 тестов, нагрузка 500 TLS клиентов и native reference —
успешно.
Реальные 10 GiB через MinIO (описанный test adapter), 1280parts и полный
SHA-256
пройдены; подробности — [VALIDATION-0.7.9](docs/VALIDATION-0.7.9.md).
2026-10-20 17:06:14 +07:00

94 lines
2.9 KiB
JSON

{
"version": "0.7.7",
"date_utc": "2026-10-20",
"ordinary_tests": {
"passed": 262,
"failed": 0,
"ignored": 11
},
"fmt": "passed",
"clippy": "passed",
"release": "passed",
"native_module_tests": 8,
"native_federation_tests": 1,
"http_altconnect": {
"native_reference": "supplied plugins/mod_http_altconnect.lua cafd74b9c5ea",
"unit_tests": 3,
"network_configurations": 10,
"checks": [
"HTTP and verified HTTPS XRD/JRD parity",
"MIME/CORS/GET/HEAD/OPTIONS and method405",
"query ignored, no JSONP",
"advertise_bosh/websocket combinations and loaded transport gates",
"discovery disabled while WSS still works",
"custom altconnect/BOSH/WS mounts and public URL prefix",
"local/global inheritance and HTTPS preference",
"HTTP native compatibility fallback",
"HTTP Host denial and overflowing port rejection",
"config type/path collision rejection"
],
"public_urls": "configuration only; no request Host/Forwarded interpolation",
"standard_caveat": "XEP0156 requires HTTPS metadata and HTTPS/WSS href; supplied-native HTTP/WS fallback retained and documented"
},
"load": {
"total_load_wall_seconds": 7.447,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.653,
"setup_latency": {
"samples": 500,
"median_ms": 57.419,
"p95_ms": 87.729,
"max_ms": 107.7
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.618,
"p95_ms": 19.347,
"max_ms": 30.719
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.483,
"metrics_before": {
"rss_kib": 7792,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26488,
"cpu_seconds": 1.17,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 27100,
"cpu_seconds": 8.93,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 27228,
"cpu_seconds": 8.95,
"fd_count": 11
},
"sampled_peak_rss_kib": 27228,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
},
"release_binary_sha256": "4678c35c9ad53f2632f0f0245d842589a15dd4e02b9cb172f15dd7b035422294",
"limitations": [
"Real production proxy/discovery/client UI not run; operator must enable module and publish well-known on HTTPS domain",
"Exactly one runtime VirtualHost; no Host Meta2/XEP0487",
"Previous parity/PEP/DNSSEC limitations unchanged; COMPATIBILITY.md"
]
}