From 34e729d9880865fb86e2c12417ae336760e42a95 Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 27 Oct 2026 07:21:26 +0100 Subject: [PATCH] docs(chat): record owner editor fault matrix and cross-platform validation --- doc/chat_audit_findings.txt | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/doc/chat_audit_findings.txt b/doc/chat_audit_findings.txt index a77aba56..4d923a3b 100644 --- a/doc/chat_audit_findings.txt +++ b/doc/chat_audit_findings.txt @@ -1522,3 +1522,61 @@ Desktop/APK build PASS,JVM155/155 (31 suite),GUI/Android audio13/13 PASS, включая test_avatars и test_group_avatars. Логи chat-profile-{gui-build, gui-results,android-build}.log в указанном каталоге. Fetch не обнаружил удалённых изменений;core/tags/headless и оставшиеся модули chat/ продолжаются. + +Редактор прав участников — 27.10.2026,послеf0d864bf + +Точный negative control:chat-tags-negative.log в /home/user/.cache/utun-audit. +Прежний load возвращал editor после injected finalize error;новая регрессия +ожидаемо завершилась assertion134. Теперь load проверяет bind/step/fields/ +finalize,точные ключи/подпись/source,весь owner JSON и канальную подпись, +закрывает cursor до публикации. Отсутствие строки/placeholder/ошибка дают NULL. + +Editor хранит исходный owner JSON/подпись и желаемые поля. Commit владеет +BEGIN IMMEDIATE,повторно читает проверенную запись и сравнивает baseline; +изменившийся owner возвращает-2 без перезаписи. Новая версия/история ролей, +JSON и editor подготавливаются до member_sync_put и COMMIT. Ошибка сохраняет +editor,member/nodes/Merkle и отсутствие уведомлений;повтор не дублирует историю. +После commit editor обновляется без аллокаций,далее идут уведомления без +SQLite cursor. No-op делает ROLLBACK,сохраняя подпись/версию без commit hook. +Чужая транзакция запрещена,unrecovered rollback запрашивает owner stop/close. +Канальный private key очищается на всех путях после получения/подписи. + +Owner ver проверяется одним API editor/member_sync:пустой блок0,непустой +плоский объект с уникальными строковыми полями и канонической ver1..INT_MAX. +Знак/ведущий ноль/суффикс/overflow отвергаются вместо atoi. Общий member read +проверяет finalize и не обрезает TEXT/hidden NUL до сравнения версии. +admin/moder принимают желаемые yes/no,сохраняют прежнюю историю и дописывают +e/d при смене роли,включая удаление желаемого ключа. +Encoder полностью экранирует C0;строгая замена не принимает невалидный JSON, +нестроковые/повторные ключи,NUL,неподходящий ver или превышение лимитов. + +GUI trampoline применяет частичный объект к свежему snapshot,поэтому поля, +неизвестные форме,и неуказанные роли не исчезают. Необязательный ver проверяет +исходную версию формы;ошибка логируется без commit. Android проверяет setter +каждого флага и не фиксирует частичный набор при отказе. Display и JNI больше +не усекaют admin/moder историю до256 байт,что могло скрыть последнее отключение. + +test_chat_profile дополнен37 SQL fault/retry (включая begin/member savepoint/ +release/commit,чтение/private key/owner write/JSON),sign/veto/failed nested +rollback,10 allocation fault/retry через current snapshot,strbuf и prepared +editor. Независимый reader сверяет member/nodes/Merkle до committed callback; +состояние editor и число событий сохраняются при отказе. Проверены stale -2, +no-op без hook,повторные правки одного editor,строгий JSON/C0 и диапазон версий, +частичный GUI patch/stale/malformed request,foreign txn. История>256байт с +последним d показывает выключенную роль;новый e дописывается с сохранением +всего префикса. Удаление канала из committed callback безопасно,editor остаётся +собственностью caller;allocation baseline восстановлен. +PASS:chat-tags-memory-test.log и chat-tags-final-{unit,adapter}.log. + +Общая проверка owner editor — runtimec8e1d120,test104b7026 + +Первые full/Android сборки остановились на недостающем include member_sync.h +в JNI,не на тестовом runtime. Исправление — c8e1d120;первые логи сохранены: +chat-tags-{full-check,android-build}.log. Повтор check.sh218/218 PASS,0 skipped, +proxy9/9,burst1/1,load8/8,134217728байт,187с:chat-tags-retry-full-check.log +и retry-full-logs. ASAN/UBSan/LSan21/21 PASS,detect_leaks=1,halt_on_error=1: +chat-tags-asan-results.log и chat-tags-asan-logs. Desktop/APK build PASS, +JVM155/155 (31 suite),GUI/Android audio13/13 PASS;логи chat-tags-{gui-build, +gui-results,android-retry-build}.log в указанном каталоге. Fetch без удалённых +изменений. Core.h остаётся частичным:глобальное имя/UI-state/lifecycle и +headless/JOIN/sync/invite/whisper продолжаются;новых отметок[V] не добавлено.