meta(handoff): whole snolla batch LIVE on VDS — emspb+labtools.ru+labtools.pro; 4 commits await push

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-02 13:02:21 +03:00
parent a9f4f3a673
commit d677f530b4

View File

@@ -1,39 +1,47 @@
---
_last_updated_: 2026-07-02T00:40:00Z
session_id: 2026-07-02-emspb-vds-deploy-cutover
_last_updated_: 2026-07-02T09:45:00Z
session_id: 2026-07-02-labtools-pro-and-ru-vds-cutover
---
# Next session handoff
## Recent commits
- `deploy(emspb)` `c3b722bb`: emspb.ru snolla-app LIVE на vds-kzntsv — staging собран+развёрнут (stack 18) + **cutover выполнен в ту же сессию** (оператор флипнул DNS), live-smoke GREEN. Запушен.
- `deploy(labtools)` `a15fd65a`: labtools staging GREEN на vds-kzntsv (stack 17) — ждёт DNS-flip.
## Итог сессии — весь snolla-тираж выехал на VDS ✅
`emspb.ru` + `labtools.pro` + `labtools.ru` — все LIVE на [[vds-kzntsv]] (`89.253.255.94`) за traefik. RUVDS IIS (`80.64.31.36`) — rollback, живой.
## Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
| `[labtools-web-vds-deploy]` | STAGING GREEN, **ждём DNS-cutover** | `.tasks/STATUS.md` + `.wiki/concepts/labtools-vds-deploy-runbook.md` |
| `[emspb-web-vds-deploy]` | 🟢 **closed** (staging+cutover LIVE) | `.wiki/concepts/emspb-vds-deploy-runbook.md` |
## Recent commits (⚠️ 4 ЛОКАЛЬНЫХ, НЕ ЗАПУШЕНЫ — автопуш не выдавался)
- `a9f4f3a6` deploy(labtools): 43e28ba LIVE — cutover labtools.ru done
- `ed99f222` deploy(labtools-pro): 7bd9fae LIVE — cutover labtools.pro done
- `531d7f0f` deploy(labtools-pro): staging GREEN, stack 19
- `253f427a` decommission(emspb): сняты emspb.ru/www SNI-биндинги с RUVDS IIS
**Первое действие след. сессии если разрешат: `git push`** (4 коммита ждут).
## Состояние emspb (DONE)
`emspb.ru`+`www.emspb.ru` LIVE на VDS (`89.253.255.94`), Portainer stack `emspb` (Id 18), образ `registry.kzntsv.site/emspb:b6e361a`. traefik-rule = боевые хосты (staging-хост убран→404), единый LE-cert, `ssl_verify=0`. RUVDS IIS `80.64.31.36` цел = rollback. Env == labtools (8 секретов). Рунбук записан. Workshop отрепорчен.
## Состояние треков
| Трек | Статус | Стек | Образ |
|---|---|---|---|
| `[emspb-web-vds-deploy]` | 🟢 closed (LIVE + RUVDS decommissioned) | 18 | emspb:b6e361a |
| `[labtools-pro-web-vds-deploy]` | 🟢 closed (LIVE) | 19 | labtools-pro:7bd9fae |
| `[labtools-web-vds-deploy]` | 🟢 closed (LIVE) | 17 | labtools:43e28ba |
## Состояние labtools (ЖДЁТ)
Образ `registry.kzntsv.site/labtools:43e28ba`, Portainer stack `labtools` (Id 17), STAGING `labtools.vds.kzntsv.site` healthy, smoke vs бой GREEN. Бой на RUVDS IIS (`80.64.31.36`) живой. **DNS labtools.ru/www ВСЁ ЕЩЁ на RUVDS** (проверено 2026-07-02 внешним резолвером) — cutover НЕ выполнен.
Рунбуки: `.wiki/concepts/{emspb,labtools,labtools.pro}-vds-deploy-runbook.md`.
## Спроси оператора / жди сигнал
- **labtools DNS-cutover** — как оператор скажет «флипнул labtools» (проверить внешним резолвером что именно labtools→VDS!): добавить в stack 17 traefik-rule `Host(labtools.ru) || Host(www.labtools.ru)`, дождаться LE-cert, smoke на боевом хосте, убрать staging-хост post-cutover, отрепортить. Рунбук labtools § Cutover.
- `labtools.pro` — отдельная таска, ждёт заведения (оператор решил 2026-07-01).
## DNS-факты (на будущее)
- Зоны на РАЗНЫХ провайдерах: `emspb.ru`/`labtools.pro`**reg.ru** (`ns1/ns2.reg.ru`); `labtools.ru`**Yandex DNS** (`dns1/dns2.yandex.net`). Проверять авторитетный NS того провайдера.
- labtools.ru siteUrl = **non-www** (`https://labtools.ru`, sitemap host без www); emspb/labtools.pro = www (R3). Разные тенанты — разный canonical.
## Не делать (guards)
- **НЕ добавлять `Host(labtools.ru)` в traefik-rule ДО флипа DNS** — LE HTTP-01 упадёт на RUVDS → сожжём rate-limit. Cм. memory [operator-dns-flip-verify-domain-before-cutover].
- **НЕ путать домены** — на этой сессии оператор флипнул emspb, НЕ labtools (был запланирован). Всегда external-resolve перед PUT traefik-rule.
- **НЕ выводить RUVDS IIS** (labtools/emspb) — rollback-путь.
- **НЕ флипать DNS самим** — это оператор.
- Build snolla-образов — НА VDS из чистого `git archive`, push с VDS (registry локален).
## Открытые follow-up (не блокеры, по решению оператора)
- **RUVDS-биндинги labtools.ru/www + labtools.pro/www** ещё на IIS (rollback). Снять как для emspb (`Remove-WebBinding` + backup config) — когда оператор скажет. Ключ: `~/.ssh/ruvds-iis-migration`, `Administrator@80.64.31.36`. См. [[../.wiki/entities/ruvds-iis-host]].
- **`emspb.snolla.com`** — НЕ мигрирован (DNS→IIS), биндинг оставлен намеренно. Отдельная миграция если понадобится.
- **www.labtools.ru** — на момент wrap ещё split-brain (публичный кэш RUVDS, TTL до 6ч); авторитетные оба уже VDS, LE-cert на www выпущен. Доедет сам. Спот-чек внешним резолвером позже.
- **Косметика labtools.pro:** стартовый баннер лога = `labtools.ru (snolla)` (константа app-name из скаффолда). У workshop, не блокер.
## Autopush
- Оператор выдал grant «пуш разрешаю» на этой сессии (2026-07-02). Session-end сбрасывает в ask-mode.
## Guards
- RUVDS IIS НЕ выводить целиком (общий catch-all, ещё держит ~22 хоста + rollback).
- НЕ добавлять `Host(...)` в traefik ДО подтверждения флипа на **всех** авторитетных NS зоны (LE rate-limit).
- Стеки на VDS — только через Portainer (env сохранять при PUT, pullImage=false для label-only правок).
## Инфра-заметки
- Сборка образов — на VDS из `git archive <sha>` (обход traefik-499), push с VDS. VERDACCIO_CI_TOKEN + PORTAINER_API_KEY в `pass vds-kzntsv/full-env`.
- Env всех snolla-тенантов идентичен (8 секретов) — при новом стеке брать verbatim из соседнего (`GET /api/stacks/<id>|.Env`).
## Memory updates за сессию
- Заведена `operator-dns-flip-verify-domain-before-cutover` (verify which domain externally before touching traefik Host rule).
- Дополнена `operator-dns-flip-verify-domain-before-cutover`: проверять АВТОРИТЕТНЫЙ NS (не публичный кэш), гейт = ВСЕ auth-NS согласны (dns1/dns2 расходятся mid-propagation), идентифицировать провайдера зоны.