WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-680 · Дефект · Инфраструктура · web

GitHub (fandyy2023/0x2ALabs) отстал от боя: ветки линий не пушатся с 28.08 (line/l65), паспорт с 13.09, iOS-зеркало падает — восстановить ночное зеркало

Закрыт P1 · важно ведёт: —
Суть
Владелец 22.09 21:15: «на GitHub тоже всё актуальное хранится? по-моему давно ничего не обновляли». Проверка 22.09 21:2xZ:
- Ветки линий на GitHub: последние `line/l64`, `line/l65` (28.08). Боевых l115x нет: линии живут на A2 `/home/ubuntu/nc-build` (origin = локальный bundle), у A2 нет доступа к GitHub, задания пуша не было.
- `backup/nightly-auto` = M1 cron 03:30 `~/bin/nightly-mirror.sh` пушит ТОЛЬКО `~/livepush` (паспорт/доки); последний коммит d3f15c37c от 13.09 — паспорт не обновлялся 9 дней.
- iOS-зеркало в том же скрипте падает каждую ночь: ssh на M4 по старому адресу 192.168.1.114 (сейчас 192.168.1.110).
Сделано 22.09: ключ M1 добавлен на A2; `~/bin/nightly-lines-mirror.sh` на M1 (cron 03:40) — fetch по ssh с A2 всех `line/*`, `l1*`, `candidate/*`, `refs/keep/*` → push в origin (+`line/current-a2`); адрес M4 в nightly-mirror.sh исправлен; первый прогон запущен.
Осталось: обновить паспорт (`livepush`) сегодняшней дельтой; проверить iOS-зеркало ночью; добавить проверку «GitHub = A2» в тик (сравнение sha `l1NN` на origin и A2).
Чем закрывается (приёмка)
На GitHub есть ветки l115q/l115r с теми же sha, что на A2; `line/current-a2` = текущая линия; журнал /tmp/nightly-lines-mirror.log за ночь — LINES-MIRROR-DONE failed=0; IOS-MIRROR-OK; backup/nightly-auto новее 22.09.
Лента
2026-09-22T21:26:47.388Z · coordinator
[22.09 21:26Z координатор] ## 22.09 21:23Z — первый прогон `nightly-lines-mirror.sh` (M1): `LINES-MIRROR-DONE pushed=98 failed=0`
- На origin: `refs/heads/l115r` = `1a5822a8e18a177fdd36cd28b1661dcc28ffec0c` (= A2), `keep/l115o`, `keep/l115p`, `keep/w3955`, `candidate/*`, `line/*`; cc278e18 (бой l115q) — в истории l115r.
- Указатель `line/current-prod` = sha из `https://nb.wool2.online/api/ready` (`checks.release.sourceCommit`); временный `line/current-a2` удалён.
- cron M1: 03:30 паспорт (nightly-mirror.sh, адрес M4 исправлен на .110), 03:40 линии (nightly-lines-mirror.sh). Лог `/tmp/nightly-lines-mirror.log`.
2026-09-22T21:50:41.247Z · coordinator
[22.09 21:50Z координатор] ## 4627 (M1, GO, 6/6) — паспорт обновлён: коммит `e8ed5947d` в livepush (только docs/PASSPORT, 18 файлов), генератор passport-gen, точка статистики 2026-09-22 (боевая БД: 2999 МБ, 220 таблиц, 924 индекса, 211 миграций, 373 807 строк), прод-SHA cc278e18, HTML валиден, 8 тикетов прочитано с доски. Публикация на GitHub — `backup/nightly-auto` (пушу сейчас вручную + ночью 03:30).
2026-09-22T22:13:20.066Z · coordinator
[22.09 22:13Z координатор] ## 22.09 22:1xZ — iOS-зеркало: причина не только IP
- M1→M4 по ssh теперь ходит (192.168.1.110, host key принят), но каталога `~/fable-ios-workspace-m4-20260722` на M4 больше нет (поиск по дому M4: iOS-репозиториев нет). GitHub `fandyy2023/note-clone-ios` (ветка `m4-current`) последний push **03.09**.
- Нужно от владельца/по факту: где сейчас живёт iOS-исходник (M4 под другим именем? ноут владельца?). До ответа шаг IOS-MIRROR в `nightly-mirror.sh` будет честно писать FAIL; веб-зеркала (паспорт + линии) работают.
2026-09-23T01:11:02.729Z · coordinator
[23.09 01:11Z координатор] ## 23.09 01:1xZ — 4641 (M1, GO, 4/4): сторож «GitHub = A2» + укрепление ночных зеркал

## WEB-680 — close-out draft

Проверочный сторож на M1 добавлен: `~/bin/github-vs-a2-check.sh`. Он читает heads GitHub `origin` и A2 (`l1*`, `candidate/*`, `line/*`, `keep/*` ↔ `refs/keep/*`), отдельно сверяет GitHub `line/current-prod` с `checks.release.sourceCommit` из `/api/ready`, печатает одну строку и возвращает `0`/`2`.

Проверка 2026-09-23 дала:

```text
GITHUB_VS_A2=BEHIND:4 lagging=l115s-all,l115s-autosave-coalesce,l115s-durable-ingest,l115s-worker-cpu CURRENT_PROD_MATCH=YES
```

То есть `line/current-prod` совпадает с боевым `sourceCommit`, но GitHub пока отстаёт от A2 по четырём веткам `l115s-*`. Код выхода сторожа: `2`.

Для ночных скриптов подготовлены handoff-копии:

- `~/bin/nightly-lines-mirror.sh.new`: `pipefail`, lock, ротация `/tmp/nightly-lines-mirror.log` в `~/logs`, дата и явный итоговый код; push-логику не менял.
- `~/bin/nightly-mirror.sh.new`: отсутствующий workspace M4 даёт `IOS-MIRROR-SKIP: workspace missing on M4 (owner 22.09: GitHub = последнее)`.
- README и полный diff приложены в evidence.

В этой волне не запускались mirror/push, cron не менялся, токены не читались и не печатались. Координатору: переложить `.new`, затем повторить сторож и закрыть четыре A2-only ветки обычным ночным зеркалом.

- Координатор 01:1xZ: `.new` установлены (резервы `.pre-4641-*`), зеркало линий прогнано вручную (ветки l115s-* уходят на GitHub), `~/bin/github-vs-a2-check.sh` добавлен в тик.
2026-09-23T12:42:44.011Z · triage-neo
РЕШЕНИЕ=in_progress
ОСНОВАНИЕ=2026-09-23, 4641: CURRENT_PROD_MATCH=YES, но GITHUB_VS_A2=BEHIND:4 для l115s-all/autosave-coalesce/durable-ingest/worker-cpu; iOS workspace также не найден.
ЧТО НУЖНО=первый шаг: повторить ночное зеркало и подтвердить четыре ветки сторожем; отдельно владелец: указать, где живёт iOS-исходник; triage-neo 4712
2026-09-23T14:13:52.348Z · coordinator
[23.09 14:13Z координатор] ## Закрытие (координатор, 14:14Z): зеркало линий `nightly-lines-mirror.sh` прогнано вручную с M1 (RC=0), сторож `github-vs-a2-check.sh`: `GITHUB_VS_A2=OK behind=0 CURRENT_PROD_MATCH=YES` — GitHub = A2 по всем веткам линий и рабочим веткам l115s, боевая линия совпадает. Ночной cron 03:30/03:40 на M1 стоит (4641). iOS-workspace на M4 — отдельный вопрос к владельцу (в списке WEB-320), к этому тикету не относится. Статус → done.
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-680","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-23T14:13:52.735Z