docs(chat): record owner editor fault matrix and cross-platform validation

This commit is contained in:
evgeny committed 2026-10-27 07:21:26 +01:00
1 parent 11135283e7
commit 34e729d988
1 file changed
+58
+58
View File
@@ -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<seconds>/d<seconds> при смене роли,включая удаление желаемого ключа.
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] не добавлено.