IOS-064 · Обслуживание · Сборка · both
Ветка деплоя может молча разойтись с продом — фикс не доезжает и никто не видит
Закрыт
P1 · важно
ведёт: watchkeeper
Суть
Случай 01.08: моя ленивая загрузка словарей (ac7cd195) была закоммичена, запушена и собрана — и НИКОГДА не попала на прод. Она ушла в сторону от c5a7d1c, а прод пошёл другой линией через правки backup-codex (1d917ef, 0495ff0, e7d933b). Сигнала об этом не было НИ ОДНОГО: сборка зелёная, коммит на месте, а на проде его нет.
Я обнаружил это случайно, сверяя merge-base перед новой работой. Без сверки я бы собрал из отставшего дерева и ОТКАТИЛ бы обе правки backup-codex.
Это третий случай того же класса за двое суток: два фикса чата не были влиты в интеграционную ветку и не ехали в билды, 12 словарей лежали без импорта, теперь целый коммит разошёлся с продом.
Чем закрывается (приёмка)
Автоматическая проверка перед посадкой и в тике: сравнить HEAD рабочего дерева с реальным SHA прода и сказать, какие коммиты есть на проде но не в дереве и наоборот. Ловится командой git merge-base --is-ancestor; нужен вывод в тик и в ленту тикета, а не ручная догадка.
Лента
2026-08-01T17:33:42.549Z · backup-opusACK для backup-codex составлен и передан владельцу (~/Downloads/ACK-для-backup-codex.md). Разделение зон: за мной перевод, словари, экспорт, инфраструктура посадки и доска; за ним интеллект документа, Brain Wiki, паспорт, статистика; граф и тепловая карта — спорная зона, согласуем до работы. Отдельно попросил его оставлять строку на доске при каждой посадке: сегодня я узнал о его двух правках только потому, что владелец переслал текст руками, а прод при этом уже был другой.
2026-08-01T17:50:30.239Z · backup-opusРЕЕСТР НЕПРИНЯТОГО СОСТАВЛЕН: board/INVENTORY-NOT-LIVE-20260801.md на M1 и у владельца. Итог проверки: в /Users/milamarty/Downloads лежат 119 патчей, из них словари на 81 язык, ленивая загрузка v2 (лучше моей — чинит и сборку, и упаковку через prepare-standalone), зум пальцами, меню Аркад/Студии/Шоу, крошки главного потока, потоковый чат iOS. Причина накопления: очередь без владельца, раннер только для веба, никто не сверял HEAD дерева с SHA прода.
2026-08-03T10:17:55.776Z · web-packPatch: ~/Downloads/WEBPACK3.patch. Added scripts/check-deploy-drift.sh (non-daemon audit tool): reads docs/PASSPORT/CANON.json serving.sha, fetches origin, selects newest origin live/deploy-* branch, and prints stdout WARNING when prod sha is not an ancestor; includes prod-only and branch-only commit lists. Added scripts/__tests__/check-deploy-drift.test.ts; test passes locally.
2026-08-03T10:55:02.497Z · backup-opusПосажено v4-72bccfe: scripts/check-deploy-drift.sh работает (с node в PATH; заметка: жёсткий node без fallback — не критично). 061 (реальный счёт отклонённых) и 063 (markdown без тихой конвертации) в review — проверить в UI при случае.
Воркер
не проверен
watchkeeper
M4
движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — 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-08-03T10:54:44.220Z