docs(chat): describe complete JSON exports and listing failure tests
This commit is contained in:
1 parent
cb0b71aec1
commit
463041a87f
3 files changed
+58
No files matched your search
@@ -1388,3 +1388,48 @@ chat_member/radio,avatar,channel/admin/services/member_files network,JOIN,
|
||||
attachment,feedback/poll. Desktop/APK build и JVM155/155 (31 suite) PASS;
|
||||
GUI/Android audio12/12 PASS:/tmp/chat-member-final-{desktop-build,android-build,
|
||||
gui-results}.log. chat_member.h отмечен[V];core/headless и весь chat/ продолжаются.
|
||||
|
||||
JSON-интроспекция — 27.10.2026,после774fb66b
|
||||
|
||||
Точный negative control:/tmp/chat-json-negative.log. Допустимое подписанное
|
||||
имя канала с ASCII01 возвращалось channels_json без полного escaping:
|
||||
json_valid=0,ожидаемое падение нового test_chat_json. Старый channels writer
|
||||
также увеличивал указатель по неограниченному snprintf-return;нулевой/малый
|
||||
буфер не проверялся. Старые listing игнорировали ряд bind/step/finalize и
|
||||
могли вернуть успешный префикс при отказе вложенного чтения/последующих строк.
|
||||
|
||||
Channels/members теперь строят checked strbuf с общим полным JSON escaping,
|
||||
копируют результат после завершения всех SELECT и проверки caller capacity.
|
||||
Messages проверяет оба bind,step/finalize и арифметику оставшегося буфера;
|
||||
ошибка очищает prefix. Все API сбрасывают out_len0,очищают допустимый buf,
|
||||
отклоняют неверный context/канал/offset/размер и не пишут при capacity0.
|
||||
Профильные TEXT читаются без сужения/потери hidden NUL;неверные key/address
|
||||
типы/размеры отклоняются. Messages сериализует поля SQLite json_object.
|
||||
Полные имена/8192-byte adm_tags не обрезаются;IPv6 форматирует inet_ntop,
|
||||
protocol6 показывается TCP+REALITY. Deleted-member показывается offline.
|
||||
|
||||
После собственного commit канала runtime может быть отложен. Channels_json
|
||||
проверяет наличие history-таблицы и показывает committed канал с msgs0,
|
||||
не создавая таблицы во время чтения. Прочие SQL-ошибки count/peers/addresses
|
||||
возвращаются как ошибки чтения,а не нулевые счётчики. Caller-транзакция не
|
||||
завершается при успешном/неуспешном listing. Header/CLI контракт уточнён.
|
||||
Бинарный snapshot member.h явно отделён от расширенной JSON-интроспекции.
|
||||
|
||||
Новый test_chat_json:36 prepare/bind/step/finalize/text/strbuf-отказов с
|
||||
успешными повторами,включая SQL-ошибку после полностью сериализованной строки;
|
||||
проверяются out_len0/пустой output и неизменность total_changes. Нулевые,
|
||||
малые,ровно-недостаточные и ровно-достаточные capacity защищены canaries.
|
||||
Проверен roundtrip каждого ASCII-control1..31,UTF-8/quotes/backslash,
|
||||
255-байтового имени с расширением escaping,8192-byte tags,IPv4/IPv6/REALITY.
|
||||
Hidden NUL,неверные размеры/типы ключей/адресов и неканонический stored ID
|
||||
отклонены без усечения;caller txn сохраняется. Настоящий отказ u_calloc
|
||||
db_sync_instance_add после commit оставляет новый канал видимым с msgs0;
|
||||
ensure_channel_ready повторно активирует runtime. Allocation balance восстановлен.
|
||||
PASS:/tmp/chat-json-final-unit.log. До расширения matrix native5/5 PASS:
|
||||
/tmp/chat-json-first-{test,adapter,schema,poll,services}.log. Общая проверка
|
||||
runtime29e15254/testcb0b71ae выполняется отдельно;весь chat_core/chat/ ещё частичен.
|
||||
|
||||
Чтобы повторные проверки не заполнили tmpfs,завершённые собственные fixture
|
||||
utun-channel-create/utun-member-sql перенесены в
|
||||
/home/user/.cache/utun-audit/completed-fixtures;прежние пути сохранены symlink.
|
||||
Недоступные каталоги root не трогались;чужие артефакты не удалялись.
|
||||
@@ -4,6 +4,16 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[+] **chat_core JSON: полное escaping и атомарный результат чтения** — 27.10.2026.
|
||||
Подтверждён невалидный JSON для допустимого подписанного имени с ASCII01. Channels/members используют
|
||||
checked strbuf и полное escaping;все listing проверяют SQL-этапы,включая bind/finalize/вложенные запросы.
|
||||
Отказ оставляет out_len=0 и пустой допустимый buffer;нулевой/точный размер не повреждает canaries.
|
||||
Скрытый NUL/неверный тип/размер полей отклоняются. Committed-канал без history-таблицы виден с msgs=0;
|
||||
чтение не меняет БД и не завершает транзакцию caller. Новая test_chat_json:36 отказов с повторами,
|
||||
ошибка после готовой строки,все ASCII controls,UTF-8/длинные имена/8192-byte tags,IPv4/IPv6/REALITY,
|
||||
повреждённые строки и настоящая deferred activation/retry PASS. Общие результаты — в отчёте.
|
||||
Подробнее:[chat_audit_findings.txt](chat_audit_findings.txt),«JSON-интроспекция».
|
||||
|
||||
[+] **chat_member/status: полный снимок,границы формата и committed mute** — 27.10.2026.
|
||||
Подтверждён ложный успех снимка после finalize error;теперь SQL/память не дают частичный список.
|
||||
Список ограничен65535 записями,сортируется qsort (online,unsigned node_id);строки wire дополняются NUL.
|
||||
|
||||
@@ -35,12 +35,15 @@ status
|
||||
channels
|
||||
Список всех каналов с метаданными: id, имя, owner, число мемберов,
|
||||
число сообщений, сколько онлайн.
|
||||
Уже сохранённый канал с отложенной подготовкой истории виден с msgs=0.
|
||||
Пример: chatcli channels
|
||||
|
||||
members <ch_id>
|
||||
Список участников канала с полным состоянием:
|
||||
node_id, имя, online, connected, публичные ключи (x25519/ed25519 hex),
|
||||
адреса (ip, port, proto, rtt).
|
||||
proto: UDP, TCP или TCP+REALITY; deleted-участник показывается offline.
|
||||
Строки возвращаются целиком с JSON escaping;ошибка SQL/размера не даёт частичный успешный список.
|
||||
Пример: chatcli members 12345
|
||||
|
||||
messages <ch_id> [count]
|
||||
|
||||
Reference in new issue
Block a user