Close media contract audit and record architecture review
This commit is contained in:
1 parent
5e3701bb2f
commit
9b72a0dadf
2 files changed
+49
-10
No files matched your search
@@ -1,7 +1,9 @@
|
||||
Аудит media_async / media_delivery — 2026-10-24
|
||||
Статус: alias encrypted_file, граница voice_file, переанонс SQLite и расхождение MIME write/read исправлены.
|
||||
Сверка оставшихся общих описаний ещё не завершена. Последнее продолжение и результаты MIME-фикса — в конце.
|
||||
Ниже сохранены исходное воспроизведение, согласованный проект и результаты исправления encrypted_file.
|
||||
Сверка двух каталогов завершена: все11 заголовков, sync.md, _desc.txt и encrypted_attachments.md.
|
||||
Общий service_lifecycle.md проверен в media-части; разделы других сервисов не считаются закрытыми.
|
||||
Ниже сохранена хронология воспроизведений и исправлений; прежние отметки незавершённости относятся к этапам.
|
||||
Последние проверки MIME и итоговая архитектурная сверка — в конце.
|
||||
|
||||
Подтверждённый дефект: исходник уничтожается через другое имя того же файла
|
||||
|
||||
@@ -494,5 +496,35 @@ chat_attachment_send (chat_attachment.c:198..225) имеет такую же с
|
||||
/tmp/media-mime-fix-profile-logs/, /tmp/media-mime-sanitizer-build-retry.log,
|
||||
/tmp/media-mime-sanitizer-tests-build.log, /tmp/media-mime-sanitizer-results.log,
|
||||
/tmp/media-mime-sanitizer-test_*.log. Полный check и Windows/FreeBSD для MIME-фикса не запускались.
|
||||
encrypted_file.h теперь согласован с реализацией. Остаются общий _desc.txt и сверка
|
||||
encrypted_attachments.md с chat/UI; общий service_lifecycle за пределами media не входит в этот аудит.
|
||||
encrypted_file.h теперь согласован с реализацией. Последующая сверка общих описаний завершена ниже.
|
||||
|
||||
Завершение аудита media_async/media_delivery — 2026-10-24
|
||||
|
||||
- Все11 публичных заголовков двух каталогов сверены по полным функциям и структурам реализаций:
|
||||
media_async/crypto, attachment/send, encrypted_file, voice_file, media_index/download/delivery/proto,
|
||||
file_transfer. Уточнены назначения, входы/выходы, владение и потоки, ошибки и wire-ограничения.
|
||||
- _desc.txt заменён актуальным описанием подготовки, поиска/загрузки, relay, каталога и репликации.
|
||||
Убраны прежние предположения о RTT-выборе, только прямых соединениях, часовых повторах и ACK-окне.
|
||||
Отражены фактические QUERY/CM/transfer UUID, пределы выдач, per-group RX-курсор и атомарный приём страницы.
|
||||
sync.md уточняет отсутствие ожидания HAVE ACK и проверки SQLite при локальном переанонсе.
|
||||
- encrypted_attachments.md целиком сопоставлен с chat_attachment.c и источниками desktop/Android UI:
|
||||
inputbar, MessageList/attachment_key_ui, JNI snapshot, ChatRepository, MessageBubble/Reply/ChannelList.
|
||||
Уточнены MIME, видимость desktop-кнопки при наличии pending requests и preview цитаты после расшифровки.
|
||||
Контейнер не выдаётся UI как готовый файл; путь/метаданные заменяются после готовности plaintext.
|
||||
Это сверка исходников, без нового интерактивного GUI/Android runtime-прогона.
|
||||
- media-раздел service_lifecycle.md сверён по текущему start/quiesce/join/done/destroy и владельцам
|
||||
worker/temp/CM/relay. Дописано, что ранний MIME-валидатор допустим в uasync и не выполняет I/O.
|
||||
Общий документ сохраняет частичную отметку: голос, звонки и другие немедийные владельцы вне этой проверки.
|
||||
- Архитектура исправлений остаётся простой: формат/валидация контейнера принадлежат encrypted_file,
|
||||
temp/durability — file_io, публикация и БД/UI — задаче chat_attachment; один владелец на ресурс.
|
||||
Media_index регистрирует подготовленное, delivery проверяет передачу и ведёт каталог своей группы.
|
||||
Синхронные приём/проверка/сборка delivery в uasync и отсутствие общей транзакции ФС/SQLite
|
||||
явно описаны как действующие границы. File_transfer оставляет ключи/авторизацию/проверку caller.
|
||||
- Все четыре воспроизведённых дефекта исправлены и имеют регрессии. Неразобранных подтверждённых
|
||||
дефектов в рамках этого аудита не осталось. Последние изменения после MIME-прогона — только описания;
|
||||
git diff --check проходит. Для MIME действуют профиль10/10 и ASAN/UBSan/LSan4/4 выше;
|
||||
прежние полные185/186 и sanitizer21/21 не приписываются последующим исправлениям.
|
||||
|
||||
Коммиты общей сверки:91fed902 (delivery),8d175049 (encrypted/UI/lifecycle).
|
||||
Чек-лист: все media-заголовки и encrypted_attachments.md — [V], общий service_lifecycle.md — [~].
|
||||
Windows/FreeBSD, новый полный check и интерактивные GUI/Android проверки не выполнялись.
|
||||
+13
-6
@@ -4,11 +4,18 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[+] **media_async/media_delivery: завершить сверку контрактов и исправлений** — завершено 24.10.2026.
|
||||
Проверены все11 заголовков двух каталогов по полным реализациям; исправлены alias файлов,
|
||||
граница voice duration, переанонс SQLite и расхождение MIME. Результаты каждого фикса приведены ниже.
|
||||
Устаревший _desc.txt заменён описанием текущей архитектуры; уточнены sync.md, encrypted_attachments.md
|
||||
и media-раздел service_lifecycle.md. Общий lifecycle за пределами media остаётся частично проверенным.
|
||||
Итог, границы и доказательства: [media_async_audit_findings.txt](media_async_audit_findings.txt).
|
||||
|
||||
[+] **encrypted_file: одинаково проверять MIME при записи и чтении контейнера** — исправлено 24.10.2026.
|
||||
write проверяет только strlen(type)<32 и принимает пустое значение/недопустимые символы,
|
||||
Прежний write проверял только strlen(type)<32 и принимал пустое значение/недопустимые символы,
|
||||
тогда как read их отвергает. Пять реальных write/read с теми же ключом/UUID/подписанным hash:
|
||||
write=0, read=-1; контрольный application/octet-stream проходит полный roundtrip.
|
||||
chat_attachment_send также проверяет только длину и может принять такой MIME до записи ключа/запуска worker.
|
||||
Прежний chat_attachment_send также проверял только длину и мог принять такой MIME до записи ключа/запуска worker.
|
||||
Воспроизведение: /tmp/media-content-type-audit.c и .mk, /tmp/media-content-type-audit.log;
|
||||
исходники/контейнеры: /tmp/media-content-type-audit-FdtMC3/. Исходный файл не меняется.
|
||||
Реализован один bounded encrypted_file_validate_type для send/write/read; 1..31 байт,
|
||||
@@ -19,7 +26,7 @@
|
||||
./build.sh --no-gui -j4 PASS; профиль10/10 и ASAN/UBSan/LSan4/4 PASS, detect_leaks=1.
|
||||
Логи: /tmp/media-mime-fix-build.log, /tmp/media-mime-fix-profile-results.log,
|
||||
/tmp/media-mime-sanitizer-results.log. Полный check и Windows/FreeBSD для этого фикса не запускались.
|
||||
Подробности: [media_async_audit_findings.txt](media_async_audit_findings.txt). Сверка оставшихся описаний продолжается.
|
||||
Подробности: [media_async_audit_findings.txt](media_async_audit_findings.txt). Сверка описаний завершена.
|
||||
|
||||
[+] **media_delivery: проверять записи SQLite перед переанонсом локальных блоков** — исправлено 24.10.2026.
|
||||
Прежний announce_local_blocks не проверял длины media_id/block_id, диапазон chunk и полный chat_id.
|
||||
@@ -37,7 +44,7 @@
|
||||
Логи: /tmp/media-announcement-fix-profile-results.log, /tmp/media-announcement-fix-sql-final.log,
|
||||
/tmp/media-announcement-sanitizer-results.log. Полный check и Windows/FreeBSD не запускались.
|
||||
Архитектура, границы воспроизведения и регрессии: [media_async_audit_findings.txt](media_async_audit_findings.txt).
|
||||
Сверка описаний двух каталогов ещё не завершена.
|
||||
Последующая сверка описаний двух каталогов завершена; итог указан в начале списка.
|
||||
|
||||
[+] **media_async voice_file: согласовать верхнюю границу длительности с метаданными** — исправлено 24.10.2026.
|
||||
Прежняя проверка samples/channels/rate >86400 пропускала полные кадры 24ч+20..980мс,
|
||||
@@ -54,7 +61,7 @@
|
||||
./build.sh --no-gui -j4 PASS; профильные тесты 10/10 PASS, включая DM, encrypted attachments и video.
|
||||
Логи: /tmp/media-voice-fix-build.log, /tmp/media-voice-fix-profile-results.log, /tmp/media-voice-fix-profile-logs/.
|
||||
Подробности и ограничения воспроизведения: [media_async_audit_findings.txt](media_async_audit_findings.txt).
|
||||
Полный аудит media_delivery ещё не завершён; новые полный check и sanitizer-прогоны не выполнялись.
|
||||
На этом этапе новые полный check и sanitizer-прогоны не выполнялись; последующие проверки и итог аудита указаны выше.
|
||||
|
||||
[+] **media_async encrypted_file: не уничтожать source через alias назначения** — исправлено 24.10.2026.
|
||||
write/read отвергают только одинаковые строки; /./ и hardlink обходят проверку одного файла.
|
||||
@@ -72,7 +79,7 @@
|
||||
Профильные21/21 и основной make check185/185 PASS; proxy9/9, burst1/1, load8/8 PASS
|
||||
в отдельном network namespace,134217728 проверенных байт. ASAN/UBSan/LSan21/21 PASS, detect_leaks=1.
|
||||
Логи: /tmp/media-fix-full-check.log, /tmp/media-fix-network-check.log, /tmp/media-fix-sanitizer-results.log.
|
||||
Полный аудит остальных контрактов media_async/media_delivery ещё не завершён; Windows/FreeBSD не проверялись.
|
||||
Последующий аудит остальных контрактов media_async/media_delivery завершён; Windows/FreeBSD не проверялись.
|
||||
|
||||
[+] **Proxy: исправить HUP/backpressure, владение и rollback** — завершено 24.10.2026.
|
||||
Согласованный проект, причины и результаты: [doc/proxy_fix_plan.txt](proxy_fix_plan.txt).
|
||||
|
||||
Reference in new issue
Block a user