diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index 68a5128..33752e0 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -7,11 +7,14 @@ session_id: 2026-07-04-tandemmebel-deploy-snolla-0-42-0 ## Итог: тираж snolla — 2 сайта на staging GREEN (tandemmebel + kupimknigi), ЕЩЁ 3 в полёте, оба готовых ждут DNS-отмашку -### ⏳ ВХОДЯЩИЕ 2026-07-05 (workshop heads-up): ещё 3 сайта на 0.42.0 -Тираж НЕ завершён. Оператор велел бампнуть на 0.42.0 ещё 3 сайта — прогеры сами заведут deploy-таски `[-deploy-snolla-0-42-0]` НАПРЯМУЮ в этот борд (не через workshop). **Notify этих тасок = сам сайт** (репортить прогу), не workshop. Жди 3 входящих, это НЕ дубли: -- **`labtools.ru`** — редеплой с 0.28.2. ⚠️ УЖЕ CUTOVER'НУТ на VDS (2026-07-02, стек 17, боевой `Host(labtools.ru)` активен) → «редеплой» = обновление ЖИВОГО прода in-place (не staging-first). Класс риска = needs-human: pull-образ + смена тега на живом стеке, rollback=предыдущий тег. Уточнить с оператором ПЕРЕД боевым apply. -- **`labtools.pro`** — первый деплой (стек 19 labtools-pro существует — проверить draft/placeholder). -- **`emspb.ru`** — редеплой (стек 18 emspb существует). +### ✅ ТИРАЖ 0.42.1 — 2 из 3 live-редеплоев ЗАКРЫТЫ (2026-07-05, оператор дал отмашку «хуярь деплой + пуш») +⚠️ **ЦЕЛЬ БАМПА = snolla `0.42.1`** (не 0.42.0). Все три сайта = редеплой ЖИВОГО прода in-place (не greenfield). Класс: needs-human, но оператор разрешил боевой apply этой сессией. + +- **`labtools.ru`** — 🟢 **DONE.** Стек 17, образ `labtools:566d41c` (0.28.2→0.42.1). Acceptance С VDS на новом образе: sitemap 38 page-locs (0.42.1 починил дефицитный sitemap sections 1→6/products 2→24), order-фикс `plg-20,plg-12,plg-25,pgr-10` == прод, 0 потерь контента. Live-smoke зелёный, TLS не тронут. Rollback тег `labtools:43e28ba`. Прог квитировал. +- **`emspb.ru`** — 🟢 **DONE.** Стек 18, образ `emspb:95a5c42` (0.28.4→0.42.1). Acceptance С VDS: 29 sitemap-роутов все 200, 0 потерь. Live-smoke зелёный. TLS = SAN-серт (CN косметически staging-хост, но SAN покрывает emspb.ru/www, curl validates). Rollback тег `emspb:b6e361a`. +- **`labtools.pro`** — ⏳ **ЖДЁМ.** Deploy-таска ещё НЕ прилетела (прог `blocked` был на liquid-фиксе). УЖЕ CUTOVER'НУТ на VDS (стек 19 `labtools-pro`, образ `labtools-pro:7bd9fae`, snolla 0.28.7). Редеплой in-place → 0.42.1, тот же паттерн: build на VDS → acceptance-gate С VDS (каталог! порядок изделий by list_priority) → PUT стека 19 env-preserve → live-smoke. Rollback `labtools-pro:7bd9fae`/DNS→RUVDS. Рунбук: `.wiki/concepts/labtools.pro-vds-deploy-runbook.md`. + +**Рецепт live-редеплоя (отработан на labtools.ru+emspb):** `git -C ~/projects/ archive | ssh vitya@89.253.255.94 tar -x -C ~/build/` → `VERDACCIO_TOKEN= docker build -f deploy/Dockerfile --build-arg VERDACCIO_TOKEN -t registry.kzntsv.site/: . && push` → throwaway-staging из env живого стека (`docker inspect --format {{.Config.Env}}` → `--env-file`, порт 127.0.0.1:50XX) → completeness-gate С VDS (expand sitemap-индекс → реальные page-locs, статус на новом образе + content-not-lost vs прод-оракул) → PUT стека через `scratchpad/put-stack.js` (env preserve, `META=/tmp/stNN.json`, swap тега) → wait healthy → live-smoke боевого домена. Notify = сам сайт. --- diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 0cc13a3..3dc3488 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1394,7 +1394,7 @@ tandemmebel-staging (стек 20) потеряет featured-вотермарк --- -## ⚪ [labtools-ru-deploy-snolla-0-42-1] — Обновить ЖИВОЙ прод labtools.ru на VDS (Portainer стек 17) с `@snollajs/snolla@0.28.2` → **0.42.1** in-place. Резолвимый sha бампа: **`566d41c`** (origin/master victor/labtools.ru; пин 0.42.1 + yarn.lock → core 0.24.1 / data 0.14.1 / liquid 0.10.2). Суперсидит пин 0.28.2 из `[labtools-web-vds-deploy]`. +## 🟢 [labtools-ru-deploy-snolla-0-42-1] — Обновить ЖИВОЙ прод labtools.ru на VDS (Portainer стек 17) с `@snollajs/snolla@0.28.2` → **0.42.1** in-place. Резолвимый sha бампа: **`566d41c`** (origin/master victor/labtools.ru; пин 0.42.1 + yarn.lock → core 0.24.1 / data 0.14.1 / liquid 0.10.2). Суперсидит пин 0.28.2 из `[labtools-web-vds-deploy]`. ⚠️ **labtools.ru УЖЕ cutover'нут на VDS** (2026-07-02, боевой `Host(labtools.ru)` на стеке 17). Это **обновление ЖИВОГО прода in-place** (pull новый тег → смена тега на живом стеке 17 → rollback = предыдущий тег), **НЕ staging-first, НЕ DNS-флип** (домен уже на VDS). @@ -1425,12 +1425,13 @@ tandemmebel-staging (стек 20) потеряет featured-вотермарк **weight:** needs-human — live-prod in-place: админ подтверждает боевую подмену тега с оператором ДО apply, НЕ автономно. **notify:** victor/labtools.ru (репорт мне; deploy-петля минует workshop). -**Status:** ready -**Where I stopped:** (not started) -**Next action:** Собрать VDS-образ labtools.ru на sha `566d41c` (snolla 0.42.1) → registry.kzntsv.site. НЕ подменять живой стек 17 до re-прогона completeness+catalog-parity на НОВОМ образе и подтверждения оператором. +**Status:** 🟢 done — 2026-07-05. labtools.ru LIVE на snolla 0.42.1, стек 17, образ `registry.kzntsv.site/labtools:566d41c` (digest `ea0649a…`). Оператор дал отмашку на боевой apply (+пуш). +**Where I stopped:** GREEN. Собрал `labtools:566d41c` на VDS (BUILD_EXIT=0, secret-guard: config/default.json ABSENT, VERDACCIO_TOKEN build-only). Acceptance на НОВОМ образе (throwaway-staging из env живого стека 17, С VDS против прод-оракула): (1) **completeness** — новый sitemap = **38 page-locs** (7 pages+1 static+6 sections+24 продукта), все 37×200 + 1×301(→200, `/products/laboratory-ball-mills`→`/lshm-750`, идентично проду); (2) **content-not-lost** — 11 реальных prod-страниц 0 потерь; (3) **order-fix 0.42.1** — presses = plg-20,plg-12,plg-25,pgr-10 == прод. NB: старый прод 0.28.2 sitemap был дефицитным (sections=1, catalog=2) — 0.42.1 отдаёт полную корректную структуру (per-category product-sitemaps). +**Next action:** — (закрыто). Боевой swap выполнен: PUT стека 17 (env 8/8 сохранён, pullImage=true) → контейнер healthy на 566d41c → **live-smoke labtools.ru зелёный** (/,robots,about,contacts,presses=200; order фикс вживую; sitemap 38; TLS-серт CN=labtools.ru Jul2→Sep30 не тронут, без LE-churn). Rollback = тег `labtools:43e28ba` (0.28.2, в registry) / стек 17 PUT назад. RUVDS 80.64.31.36 = внешний rollback (не тронут). Compose source-of-truth обновлён на 566d41c. **Branch:** master **Notify:** victor/labtools.ru + --- @@ -1513,12 +1514,13 @@ tandemmebel-staging (стек 20) потеряет featured-вотермарк **weight:** needs-human (in-place обновление ЖИВОГО прод-контейнера; прошлая emspb-VDS-деплой-таска = needs-human). **notify:** victor/emspb.ru (репортить НАПРЯМУЮ мне, минуя workshop). -**Status:** ready -**Where I stopped:** (not started) — консюмер-бамп запушен `victor/emspb.ru@95a5c42`, dev-верификация GREEN, образ ждёт сборки на VDS. -**Next action:** Собрать на VDS из git-archive 95a5c42 → registry.kzntsv.site/emspb:95a5c42 → healthy → completeness-gate на образе С VDS → боевой swap тега на стеке 18 С ПОДТВЕРЖДЕНИЯ ОПЕРАТОРА → rollback b6e361a наготове. -**Branch:** n/a +**Status:** 🟢 done — 2026-07-05. emspb.ru LIVE на snolla 0.42.1, стек 18, образ `registry.kzntsv.site/emspb:95a5c42` (digest `d6299cf…`). Оператор дал отмашку на боевой apply (+пуш). +**Where I stopped:** GREEN. Собрал `emspb:95a5c42` на VDS (BUILD_EXIT=0, secret-guard OK). Acceptance на НОВОМ образе (throwaway-staging из env стека 18, С VDS против прод-оракула): completeness — **29 sitemap-роутов все 200** (0 non-2xx/3xx), content-not-lost 29/29 (0 потерь), ключевые страницы 200. Sitemap не реструктурировался (29==29, в отличие от labtools). +**Next action:** — (закрыто). Боевой swap: PUT стека 18 (env 8/8 сохранён, pullImage=true) → контейнер healthy на 95a5c42 → **live-smoke emspb.ru зелёный** (/,robots,contacts=200; sitemap 29). TLS OK: SAN-серт покрывает emspb.ru/www.emspb.ru/emspb.vds.kzntsv.site (CN косметически=staging-хост, но curl validates sslverify=0; серт с cutover 07-02, swap не тронул). Rollback = тег `emspb:b6e361a` (0.28.4) / стек 18 PUT назад / RUVDS 80.64.31.36. Compose source-of-truth обновлён на 95a5c42. +**Branch:** master **Notify:** victor/emspb.ru + --- diff --git a/host-stacks/vds-kzntsv/emspb.compose.yml b/host-stacks/vds-kzntsv/emspb.compose.yml index ce96992..cafd57b 100644 --- a/host-stacks/vds-kzntsv/emspb.compose.yml +++ b/host-stacks/vds-kzntsv/emspb.compose.yml @@ -25,7 +25,7 @@ services: emspb: container_name: emspb - image: registry.kzntsv.site/emspb:b6e361a # git-sha victor/emspb.ru master + image: registry.kzntsv.site/emspb:95a5c42 # git-sha victor/emspb.ru master (snolla 0.42.1, bump 2026-07-05; prev b6e361a=0.28.4=rollback) restart: unless-stopped environment: NODE_ENV: production diff --git a/host-stacks/vds-kzntsv/labtools.compose.yml b/host-stacks/vds-kzntsv/labtools.compose.yml index 84f87c1..aaf1e59 100644 --- a/host-stacks/vds-kzntsv/labtools.compose.yml +++ b/host-stacks/vds-kzntsv/labtools.compose.yml @@ -24,7 +24,7 @@ services: labtools: container_name: labtools - image: registry.kzntsv.site/labtools:43e28ba # git-sha victor/labtools.ru master + image: registry.kzntsv.site/labtools:566d41c # git-sha victor/labtools.ru master (snolla 0.42.1, bump 2026-07-05; prev 43e28ba=0.28.2=rollback) restart: unless-stopped environment: NODE_ENV: production