docs(dm): record completed contract audit and validation
This commit is contained in:
1 parent
9480f8029b
commit
5bb27d1b61
1 file changed
+74
-1
@@ -1,8 +1,11 @@
|
||||
DM — аудит документации и контрактов, 26.10.2026
|
||||
DM — аудит документации и контрактов, 26–27.10.2026
|
||||
|
||||
База: /home/user/utun2, HEAD 03b050949cf36cc4868324be94a54eaddfdd494c.
|
||||
Задание: /home/user/utun-doc-audit-checklist.txt, раздел src/dm/ и связанные документы.
|
||||
|
||||
Текущий статус на 27.10.2026: аудит контрактов DM завершён, 10/10 файлов [V].
|
||||
Итог — раздел12; разделы1–11 сохраняют историю промежуточных проверок и исправлений.
|
||||
|
||||
1. Объём и статус
|
||||
|
||||
Полностью прочитаны dm_core.c/.h, dm_crypto.c/.h и dm_history.c/.h, doc/dm_arch.md,
|
||||
@@ -506,3 +509,73 @@ __real_sqlite3_bind_blob. После окончания правок повто
|
||||
/tmp/dm-expiry-fix-{sanitizers-build,sanitizers-results,sanitizers-test_dm*,full-check,netns}.log.
|
||||
Задача завершения TTL закрыта. Общий аудит DM частичный;прежние отметки сохраняются.
|
||||
GUI/Android/Windows/FreeBSD не проверялись;DELETE_ACK fault matrix отдельно не добавлялась.
|
||||
|
||||
12. Завершение аудита контрактов DM — 27.10.2026
|
||||
|
||||
База заключительного этапа: /home/user/utun4, master, исходный HEAD07f63c3047b4a9bef6c568ca590d3fefde95816f.
|
||||
Полностью сверены все семь заголовков src/dm/ с реализациями core, crypto, history,
|
||||
mailbox, mailbox_media и media; doc/dm_arch.md, doc/pm.txt и doc/pm_invites.md.
|
||||
Это завершение проверки описаний/API, не утверждение об отсутствии всех возможных
|
||||
ошибок программы. Новых подтверждённых дефектов выполнения в этом этапе нет.
|
||||
|
||||
В заголовках уточнены:
|
||||
- Заимствование аргументов, один освобождаемый блок запросов UI, жизнь instance,
|
||||
поток uasync и запрет доступа workers к SQLite/сети.
|
||||
- Проверка тела/подписи отдельно от области router/ролей, точные повторы и конфликты,
|
||||
границы транзакций при send/accept, подпись квитанции после commit входящего сообщения.
|
||||
- Независимые квитанции сообщения и файла; STORED не удаляет исходящий outbox.
|
||||
- Форматы DM/mailbox/media control, native-endian чисел и big-endian attachment_info,
|
||||
лимиты send data с descriptor и размеры выходных буферов квитанций.
|
||||
- Поколения/hidden, сохранение ключей и seq, отпечатки удалённых тел, отмена старых
|
||||
invite/transfer и отбрасывание завершения worker старого поколения.
|
||||
- Роли S/M, выбор нового storage без прежних назначений, фиксация назначения до STORE,
|
||||
local S/M control и отличие передачи пакета от durable приёма.
|
||||
- File holds, манифест путей, busy=-1 уборщика, повтор удаления и fsync каталога;
|
||||
пользовательский исходник не передаётся уборке без явного remove_source.
|
||||
- Запуск mailbox/core/media и остановка quiesce -> media_async drain -> destroy
|
||||
с живыми SQLite/группами, сохранение данных между stop/restart.
|
||||
|
||||
dm_arch согласован с порциями таймеров32/8, обычным retry5с и отдельными retry3600с/30с,
|
||||
сохранённым retry_at текстовых очередей и сбросом медиа при restart. Добавлены wire
|
||||
таблица, порядок владельцев и восстановление оригинала после EXPIRED: срок копии M
|
||||
не запрещает B получить исходный файл A; поздний EXPIRED не портит готовый файл.
|
||||
pm.txt дополнен привязкой требований к текущим owners/ролям/настройкам, dm_arch
|
||||
больше не называет этот аудит частичным. Исторические результаты сборок помечены датой.
|
||||
|
||||
Сверены относящиеся к контрактам callers: chat_service_start/stop, attachment_send,
|
||||
file_transfer lookup/cancel, Qt DmInviteDialog/MainWindow/MessageList и bridge,
|
||||
Android JNI/ViewModel/PmInviteDialog, headless DM handlers, регистрация JOIN-ключей
|
||||
и планирование member_sync после JOIN_READY/принятия участника.
|
||||
Клиентский код просмотрен для описанных DM-событий/выбора адресата/подготовки файла;
|
||||
полный аудит Qt/Android и остальных общих модулей этим не заявляется.
|
||||
pm_invites описывает владение запросом, поколение до регистрации и отсутствие
|
||||
отката открытой беседы при последующей ошибке; отмена PM не отзывает JOIN-ключ.
|
||||
|
||||
Проверки текущего этапа:
|
||||
- make -C src -j4 и сборка всех девяти существующих DM-целей: PASS.
|
||||
- Native test_dm/history/names/load/e2e/invite/media/worker/media_cleanup:9/9 PASS.
|
||||
test_dm_load:79 проверок; names:68 случаев и273 снимка, независимый Python JSON
|
||||
parser прочитал каждый полный снимок. Worker:25 запусков,50 heartbeat,max_gap11.3мс.
|
||||
Media:phase12,6266 heartbeat,allocations0->0; проверены11 retirement SQL faults,
|
||||
18 release faults, потерянные control/restart и возврат точного оригинала после TTL.
|
||||
- Linux cleanup component:13 SQL faults для scan/ACK/body, повтор после restart,
|
||||
несколько M, потерянный/повторный/чужой ACK и поздний STORED; exit0.
|
||||
Сеть перехвачена, receipt задан фикстурой; криптографию и физическое удаление M
|
||||
проверяет отдельный test_dm_media. Одношаговый autocommit может уже завершиться
|
||||
до искусственного finalize failure; тест проверяет это состояние и идемпотентный повтор.
|
||||
- Каждый из семи заголовков: C99 и C++20 с -Wall -Wextra -Werror,14/14 PASS.
|
||||
Для private/media C API C++ использует extern "C", как существующие клиенты;
|
||||
include path lib/ соответствует проекту и предоставляет sqlite3.h.
|
||||
- Все C-файлы DM побайтно совпадают с начальным снимком; C-токены всех заголовков
|
||||
совпадают после исключения комментариев/пробелов. Алгоритмы, API/ABI, wire и SQL
|
||||
этим этапом не менялись. git diff --check PASS; новые тесты не добавлялись.
|
||||
|
||||
Логи и снимки: /tmp/dm-contract-finish-before/sha256.json,
|
||||
/tmp/dm-contract-finish-{build,final-core-build,final-tests-build,headers,validation}.log,
|
||||
/tmp/dm-contract-finish-native-{results,test_dm*}.log; исходные тела/JSON — в test artifacts.
|
||||
Сетевой профиль выполнен вне sandbox. Первый sandbox-запуск cleanup вернул exit0,
|
||||
но uasync сообщил Operation not permitted при создании служебного fd; окончательный
|
||||
повтор вне sandbox прошёл без этих сообщений. Сетевые настройки хоста не менялись.
|
||||
Новые full check.sh, ASAN/UBSan/LSan, сборки/интерактив Qt/Android/Windows/FreeBSD
|
||||
не выполнялись; прежние результаты не приписываются заключительному прогону.
|
||||
Изменения radio и doc/tasks.md сохранены отдельно от DM-коммитов; push не выполнялся.
|
||||
Reference in new issue
Block a user