Record verified REQUEST commit fix and continue chat audit

This commit is contained in:
evgeny committed 2026-10-27 01:22:57 +01:00
1 parent 383eb6d076
commit e43bcec7cb
2 files changed
+65 -10

No files matched your search

+53
View File
@@ -856,3 +856,56 @@ ACK/событие — после него. Нулевой INSERT при сущ
результатов и решения автора сохранены. Runtime/wire/схема/штатные тесты не менялись;
новые fullcheck/sanitizers/GUI/APK не запускались. Чеклист остаётся без новых отчётов,
частичные отметки attachment/chat[~] сохранены. По AGENTS.md:10 дальнейший аудит остановлен.
Исправление приёма REQUEST — 27.10.2026, runtime760398b9
ak_accept_request владеет BEGIN IMMEDIATE/COMMIT и отклоняет внешнюю транзакцию
до чтения/записи без её изменения. Проверки identity,подписанного членства и авторства
выполняются внутри транзакции. Сначала читается существующий запрос:при отсутствии
вставляется ровно одна строка;дубликат incoming1/state0,2,3,4 сохраняет created_at
и решение. State2/4 повторно ставит GRANT,state3 DENY,state0 ждёт решения.
Другие состояния/направление отклоняются. Проверяются prepare,все bind,step,finalize,
число записанных строк и commit. ak_body также проверяет SQL-этапы и размеры identity/key.
ACK и событие отправляются только после commit;отказ ACK не удаляет сохранённый запрос.
Ошибки содержат channel/peer/command/stage/rc,успех — duplicate/state/queued без секретов.
Общий ak_rollback отменяет операцию;если транзакция осталась открыта,модуль снимает
callback и запрашивает stop,владелец закрывает БД после poll. Wire/схема/API не менялись.
Новый Linux test_attachment_requests использует настоящие core/SQLite,подписанного
мембера и историю через chat_core_submit_message. Локальная строка вложения — фикстура;
публикация/криптография/сетевая доставка дополнительно проверяются полным E2E-сценарием.
247 SQL-отказов с успешным повтором и дубликатом:новый запрос/state0/2/3/4,пустая или
существующая outbox,BEGIN/COMMIT,identity/member/author/request lookup,insert/outbox,
каждый prepare/bind/step/finalize/changes. Дополнительно настоящий commit veto,
ABORT/IGNORE вставки запроса и вставки/обновления очереди,внешняя транзакция с собственным
маркером,неверные state/direction/hash/flags,удалённый мембер,нет маршрута/backpressure/
ошибка send. Readonly reader непосредственно в ACK и событии проверяет точные
key/error/request/state/created_at/outbox/command/retry и соседнюю запись.
Rollback fault не даёт ACK/события,снимает callback и запрашивает stop;destroy владельцем
откатывает открытую транзакцию. Баланс выделений восстановлен.
test_encrypted_attachment получает первый настоящий REQUEST через проверенный router,
открывает внешнюю транзакцию перед сервисным callback и проверяет отказ без ACK/события
и без изменения внешнего маркера. Внешний владелец откатывает маркер и перезапускает
автора отдельным таймером вне callback сервиса. У B остаются state0 и REQUEST outbox1;
через штатные5 секунд повтор действительно проходит сеть. Перед настоящим REQUEST_ACK
независимый reader уже видит incoming1/state0 и autocommit1. Далее прежние проверки
решения автора,GRANT fault/retry,расшифровки,restart B,cache restore и удаления канала
завершаются phase10 PASS. Подписи/криптография/доставка не подменяются.
Первый лог:/tmp/utun_encrypted_attachment_ky1Lm2/test.log.
Сборка native и первичный профиль4/4 PASS. Полный ./check.sh212/212 PASS,0 skipped,
proxy9/9,burst1/1,load8/8,134217728байт,173с. Прогон в частном netns с IPv6 loopback,
настройки сети хоста не менялись. Логи:/tmp/attachment-request-fix-full-check.log,
/tmp/attachment-request-fix-full-logs. ASAN/UBSan/LSan16/16 PASS,detect_leaks=1,
halt_on_error=1,core/libuasync/Opus инструментированы согласованно в отдельной копии.
Логи:/tmp/attachment-request-fix-asan-results.log,/tmp/attachment-request-fix-asan-logs.
Desktop vibechat и Android assembleDebug PASS;GUI/Android host11/11 PASS,включая
utun_node,редактирование/удаление/события/ответы и6 вариантов audio lifecycle.
Сборки и профиль:/tmp/attachment-request-fix-{build,desktop-build,android-build,gui-results}.log.
Задача закрыта,заголовок и encrypted_attachments/service_lifecycle согласованы.
Полный аудит attachment/chat остаётся частичным. Продолжается сверка исходящего
создания запроса,файловых completion,удаления и восстановления;отметки[~] сохранены.
По новой инструкции пользователя дефекты исправляются и проверяются по мере аудита,
с последующим обновлением текстов,без остановки на обнаружении дефекта.
+12 -10
View File
@@ -4,16 +4,18 @@
## Текущие задачи
[ ] **chat_attachment: подтверждать входящий REQUEST после собственного commit** — подтверждено27.10.2026.
ak_receive использует SAVEPOINT attachment_request;во внешней транзакции RELEASE не выполняет commit.
Реальные ACK/событие отправляются при writer request1/readonly request0;внешний rollback теряет запрос автора.
Получатель уже сохранил state1 и удалил REQUEST outbox;нет повторов,ключ отсутствует и после restart автора при живых маршрутах.
Текущая A–S–B/C-фикстура:control phase10 PASS,outer phase5 ожидаемо FAIL;allocations0->0 в обоих сценариях.
Требуется собственная транзакция приёма,отказ внутри внешней транзакции без её изменения,проверенные SQL-этапы,
ACK/событие после commit и общий безопасный rollback. Дубликаты обязаны сохранять прежнее решение/повтор ответа.
Нужны постоянные проверки независимого reader в точке ACK,внешней транзакции,SQL-отказов и реального повтора/restart.
Отчёт:[chat_audit_findings.txt](chat_audit_findings.txt),«Аудит приёма REQUEST»;/tmp/attachment-request-audit-*.
Runtime не изменён;дальнейший аудит остановлен по AGENTS.md:10,отметки attachment/chat остаются[~].
[+] **chat_attachment: подтверждать входящий REQUEST после собственного commit** — исправлено27.10.2026.
Собственная BEGIN IMMEDIATE/COMMIT включает identity,права,чтение/создание запроса и повтор прежнего ответа.
Внешняя транзакция отклоняется без изменений;дубликаты incoming1/state0,2,3,4 сохраняют решение и created_at.
Проверены все SQL-этапы;новая строка/очередь требуют changes1,ACK/событие следуют после commit.
Общий rollback сохраняет прежние данные;открытая транзакция требует quiesce/stop и закрытия владельцем после poll.
test_attachment_requests:247 SQL-отказов/повторов,commit veto,ABORT/IGNORE,внешняя транзакция,
неверные состояния/права,независимые reader в ACK/событии,backpressure/send fault и rollback fault.
Сеть:первый REQUEST без ACK→очередь B сохранена→restart автора→настоящий повтор→committed ACK→phase10 PASS.
Native build/check.sh212/212 PASS,0 skipped,proxy9/9,burst1/1,load8/8 (134217728байт),173с.
ASAN/UBSan/LSan16/16 PASS,detect_leaks=1;desktop/APK build PASS,GUI/Android host11/11 PASS.
Отчёт:[chat_audit_findings.txt](chat_audit_findings.txt),«Исправление приёма REQUEST»;/tmp/attachment-request-fix-*.
Полный аудит attachment/chat остаётся частичным;исходящие запросы и файловые completion/recovery проверяются далее.
[+] **chat_attachment: фиксировать решение автора вместе с исходящим ответом до успеха/UI** — исправлено27.10.2026.
Собственная BEGIN IMMEDIATE/COMMIT включает проверку прав,state и outbox;внешняя транзакция остаётся нетронутой.