docs(media): record validated voice duration fix
This commit is contained in:
1 parent
359a9f3dfc
commit
40e2fe2e27
2 files changed
+49
-11
No files matched your search
@@ -1,6 +1,6 @@
|
||||
Аудит media_async / media_delivery — 2026-10-24
|
||||
Статус: encrypted_file исправлен; продолжение аудита подтвердило отдельный дефект границы voice_file.
|
||||
Полный аудит двух каталогов ещё не завершён. Новый дефект и проект исправления — в конце.
|
||||
Статус: encrypted_file и отдельный дефект границы voice_file исправлены.
|
||||
Полный аудит двух каталогов ещё не завершён. Граница voice_file и результаты исправления — в конце.
|
||||
Ниже сохранены исходное воспроизведение, согласованный проект и результаты исправления encrypted_file.
|
||||
|
||||
Подтверждённый дефект: исходник уничтожается через другое имя того же файла
|
||||
@@ -258,7 +258,41 @@ attachment_send.c вызывает voice_file_encode в worker, а attachment_va
|
||||
Верхние границы проверять диагностической точкой до encoder без реального кодирования суток;
|
||||
сохранить существующий настоящий Opus roundtrip короткой записи.
|
||||
|
||||
Аудит остановлен по AGENTS.md:10 после подтверждения и подготовки проекта исправления.
|
||||
Рабочий код не исправлялся. voice_file.h и attachment.h остаются [~]; оставшаяся
|
||||
повторная проверка media_delivery не выполнялась. Новый общий тестовый/sanitizer-прогон
|
||||
не запускался: в этом продолжении изменены только записи аудита, диагностика находится в /tmp.
|
||||
На этапе подтверждения аудит был остановлен по AGENTS.md:10, без изменения рабочего кода.
|
||||
Пользователь согласовал исправление; результаты приведены ниже.
|
||||
|
||||
Результаты исправления voice_file — 2026-10-24
|
||||
|
||||
- ATTACHMENT_DURATION_MAX_MS в attachment.h задаёт один предел86400000мс:
|
||||
его используют валидатор voice/video, video completion и кодировщик голоса.
|
||||
- voice_file считает frames=count/frame и проверяет25..4320000 до создания Opus
|
||||
и открытия выходного файла. Метаданные при раннем отказе не изменяются.
|
||||
Хвост <20мс сохраняет прежнее поведение: отбрасывается, включая хвост после ровно24ч.
|
||||
- Проверка архитектуры: frame всегда положителен и не больше1920 для разрешённых rate/channels;
|
||||
деление count/frame не переполняется. После ограничения frames произведение frames*frame
|
||||
не превосходит исходного count; frames*20 не превосходит86400000 и помещается в uint32_t.
|
||||
Подготовка, публикация, владение PCM/файлом и формат контейнера не меняются.
|
||||
- Лог раннего отказа содержит count/rate/channels/frames и разрешённые границы;
|
||||
debug принятой записи показывает число кадров, длительность и отброшенный хвост.
|
||||
- test_attachment: 120 граничных вызовов для пяти частот и mono/stereo.
|
||||
Все70 недопустимых длительностей отвергнуты до encoder; все50 допустимых
|
||||
дошли до диагностического encoder с инъекцией отказа. Во всех120 случаях
|
||||
побайтно сохранены исходные metadata и содержимое существующего output.
|
||||
Linux64 использует виртуальный read-only PCM; суточное кодирование не выполняется.
|
||||
- Настоящий Opus encode/decode: прежняя1с запись и десять записей на500мс с хвостом
|
||||
почти20мс, все rate/channels, все три preset. Проверены header, декодирование,
|
||||
число20мс кадров, EOF и валидность метаданных результата.
|
||||
- validate/encode/decode voice/video принимают86400000мс и отвергают86400001мс.
|
||||
- ./build.sh --no-gui -j4 — PASS. В изменённых C-файлах/тесте предупреждений сборки нет;
|
||||
общие прежние предупреждения остальных модулей остаются в полном логе.
|
||||
- Профильные тесты10/10 PASS: attachment, attachment_send, encrypted_file,
|
||||
encrypted_attachment, media_async, dm_media, dm_worker, services, video, video_no_ffmpeg.
|
||||
Первый запуск attachment внутри sandbox выдал запреты создания stream fd;
|
||||
весь профильный набор, включая attachment, успешно повторён вне sandbox.
|
||||
|
||||
Логи: /tmp/media-voice-fix-build.log, /tmp/media-voice-fix-profile-results.log,
|
||||
/tmp/media-voice-fix-profile-logs/test_attachment.log и остальные логи этого каталога.
|
||||
Новый полный make check и ASAN/UBSan/LSan не запускались; прежние результаты encrypted_file
|
||||
выше не относятся к этому изменению. Windows/FreeBSD не проверялись.
|
||||
voice_file.h и attachment.h сохраняют [~]: завершение этого фикса не закрывает
|
||||
оставшуюся сверку контрактов всего аудита. Повторная проверка media_delivery ещё не завершена.
|
||||
+9
-5
@@ -4,18 +4,22 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[ ] **media_async voice_file: согласовать верхнюю границу длительности с метаданными** — подтверждено 24.10.2026.
|
||||
Проверка samples/channels/rate >86400 пропускает полные кадры 24ч+20..980мс,
|
||||
[+] **media_async voice_file: согласовать верхнюю границу длительности с метаданными** — исправлено 24.10.2026.
|
||||
Прежняя проверка samples/channels/rate >86400 пропускала полные кадры 24ч+20..980мс,
|
||||
хотя attachment_validate отклоняет duration_ms >86400000. В штатном pipeline это означает
|
||||
лишнюю подготовку файла перед отказом публикации; дефект относится к граничным записям длиннее суток.
|
||||
Диагностический вызов реального voice_file_encode с остановкой на создании Opus:
|
||||
60 случаев, все пять частот и 1/2 канала; 20 подтверждённых расхождений проверки.
|
||||
/tmp/media-voice-duration-repro.c, /tmp/media-voice-duration-repro.mk, /tmp/media-voice-duration-repro.log.
|
||||
План: общий предел миллисекунд в attachment.h; в voice_file проверять 25..4320000 полных кадров
|
||||
Реализован общий предел миллисекунд в attachment.h; voice_file проверяет 25..4320000 полных кадров
|
||||
до создания encoder/открытия output. Валидатор и video completion используют тот же предел.
|
||||
Регрессии: границы 500мс/24ч, отбрасывание хвоста <20мс и ранний отказ при превышении на полный кадр.
|
||||
test_attachment: 120 граничных случаев; 70 ранних отказов, прежний файл и metadata сохранены.
|
||||
Настоящий Opus encode/decode: 11 записей, включая 500мс с хвостом для всех пяти частот и 1/2 канала.
|
||||
Границы метаданных voice/video 86400000/86400001мс проверены через validate/encode/decode.
|
||||
./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).
|
||||
Рабочий код не изменён: аудит остановлен по AGENTS.md:10; полный аудит media_delivery ещё не завершён.
|
||||
Полный аудит media_delivery ещё не завершён; новые полный check и sanitizer-прогоны не выполнялись.
|
||||
|
||||
[+] **media_async encrypted_file: не уничтожать source через alias назначения** — исправлено 24.10.2026.
|
||||
write/read отвергают только одинаковые строки; /./ и hardlink обходят проверку одного файла.
|
||||
|
||||
Reference in new issue
Block a user