Record verified REQUEST commit fix and continue chat audit
This commit is contained in:
1 parent
383eb6d076
commit
e43bcec7cb
2 files changed
+65
-10
No files matched your search
@@ -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
@@ -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;внешняя транзакция остаётся нетронутой.
|
||||
|
||||
Reference in new issue
Block a user