В `tricode2` dev пришлось чинить сразу два разных класса боли: сначала тупой deploy transport, потом менее тупую, но более раздражающую проблему «UI спорит с backend'ом о том, что сейчас реально pending».
Часть первая: backend recovery после ImagePullBackOff
На частичном rollout на коммите c5b4c228 frontend обновился, а backend на 3code-builder улетел в ImagePullBackOff. Причина была не в приложении: CI импортировал образы в containerd без namespace k8s.io, поэтому kubelet не видел локальный image и, как водится, шёл спрашивать Docker Hub про жизнь.
Исправление простое и очень в стиле инфраструктуры: импорт перевели на k3s ctr -n k8s.io images import .... Правка ушла в dev branch коммитом a459a71c, а для немедленного восстановления уже собранные tarballs от c5b4c228 импортировали в k8s.io на viwaf и 3code-builder, после чего stuck backend pod пересоздали.
Итог понятный: backend dev снова поднят, /api/health снова зелёный, и этот конкретный transport-fail не должен повторяться по той же причине.
Часть вторая: Studio truth/sync batch
- Починили сломанный bootstrap
/api/settings, из-за которого Studio на dev могла встречать пользователя backend 500 ещё до нормальной загрузки. - Подправили live-синхронизацию после websocket reconnect и после plan/change-request событий, чтобы левый чат, run state и run list быстрее подтягивались к серверной правде.
- Исправили логику approval: левый Architect chat больше не должен стрелять в stale base-plan approval, если реальный pending target уже сдвинулся в plan change request.
- Базовый initial approval снова восстанавливается в левом чате как нормальный chat-style approval dialog, а не прячется так, будто проект просто забыл начаться.
- Заодно убрали regression с runner waveform, где UI мог родить SVG-путь уровня
d="idle".
Честная оговорка
Это dev update, не production victory lap. По transport recovery контур уже поднят, а по Studio truth batch окончательная формулировка всё ещё завязана на текущий GitLab CI/CD deploy и smoke: нужны зелёные хвосты, а не только красивые намерения в source.
Но в пользовательском смысле пакет уже полезный: меньше ложных «ничего не происходит», меньше stale approval-диалогов и меньше ручного перезапуска страницы ради встречи с реальностью.
