IOS-016 · Задача · Граф · web
Проглоченная ошибка отдаёт пустоту вместо сбоя
На проверке
P1 · важно
ведёт: watchkeeper
эпик: IOS-003
Суть
Класс дефектов: catch превращает падение в «данных нет». Подложка должна сообщать о сбое (truncation.substrateError).
Чем закрывается (приёмка)
При падении подложки клиент получает признак ошибки, а не пустой граф.
Доказательства
Клиентский контур закрыт (a70d7aac): декод substrateError + чип graph-substrate-error + строки ru/uk + юниты GraphServerTruncationTests. Фолбэк на пустоту снят (3554fa33). ОСТАЛОСЬ: серверная эмиссия substrateError — это зона веба, не iOS.
Починено в
2026072637
Связи
- вызван (обратная) → IOS-015 — Граф в режиме сущностей отдавал 0 узлов · Проглоченная ошибка скрывала причину месяцами
- связан (обратная) → IOS-035 — Перевод молча застревает посреди прогона — статус translating, ошибки нет, повторов нет · один класс: сбой превращается в пустоту или в вечное ожидание вместо ошибки
Лента
2026-07-29T22:14:02.180Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ────────────────────────────────────────────────────────────────────────────────
2026-07-29T22:14:50.456Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ────────────────────────────────────────────────────────────────────────────────
2026-07-29T22:29:55.790Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ────────────────────────────────────────────────────────────────────────────────
2026-07-29T22:59:19.481Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ────────────────────────────────────────────────────────────────────────────────
2026-07-29T23:05:08.861Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ────────────────────────────────────────────────────────────────────────────────
2026-07-29T23:29:31.234Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ───────────────────────────────────────────────────────────────────────────
2026-07-29T23:59:42.683Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ───────────────────────────────────────────────────────────────────────────
2026-07-30T00:30:43.528Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ───────────────────────────────────────────────────────────────────────────
2026-07-30T00:55:04.697Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ───────────────────────────────────────────────────────────────────────────
2026-07-30T00:55:52.170Z · вахтёрВоркер fable-graph объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-07-30T01:00:54.386Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ───────────────────────────────────────────────────────────────────────────
2026-07-30T01:16:52.915Z · вахтёрВоркер fable-graph объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-07-30T01:21:54.687Z · вахтёрВоркер fable-graph объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-07-30T01:26:56.676Z · вахтёрВоркер fable-graph объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-07-30T01:30:23.927Z · вахтёрВоркер fable-graph объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 3 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-07-30T01:31:58.052Z · вахтёрВоркер fable-graph объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: ───────────────────────────────────────────────────────────────────────────
2026-07-30T01:36:59.728Z · вахтёрВоркер fable-graph объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-07-30T02:07:13.681Z · вахтёрВоркер watchkeeper объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.6-sol medium · ~ Pursuing goal (4h 26m)
2026-07-30T02:42:30.298Z · вахтёрВоркер watchkeeper объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.6-sol medium · ~ Pursuing goal (5h 1m)
2026-07-30T03:12:40.439Z · вахтёрВоркер watchkeeper объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.6-sol medium · ~ Pursuing goal (5h 31m)
Воркер
работает
watchkeeper
M4 · gpt-5.6-sol medium
движение в панели: 5 мин назад
gpt-5.6-sol medium · ~ Pursuing goal (6h 57m)
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
ssh -t poolpooly@192.168.1.74 "ssh -t milamarty@192.168.1.114 '/opt/homebrew/bin/tmux -L gui attach -t watchkeeper'"
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
ssh poolpooly@192.168.1.74 "ssh milamarty@192.168.1.114 '/opt/homebrew/bin/tmux -L gui capture-pane -p -S -5000 -t watchkeeper'" | less -R
Если при входе tmux покажет «.config/tmux/tmux.conf: Permission denied» — нажми q, это косметика: каталог ~/.config на M4 принадлежит root, сессия работает. Лечится один раз с паролем на M4: sudo chown -R milamarty:staff /Users/milamarty/.config && chmod 755 /Users/milamarty/.config
Обновлён
2026-07-30T01:39:15.818Z