diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 4aa2e1f..e36b7de 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1475,3 +1475,48 @@ tandemmebel-staging (стек 20) потеряет featured-вотермарк --- + +## ⚪ [emspb-deploy-snolla-0-42-1] — Обновить ЖИВОЙ прод emspb.ru на движке `@snollajs/snolla@0.42.1` (core 0.24.1 / data 0.14.1 / liquid 0.10.2) **in-place**. emspb боевой на VDS: Portainer стек **18**, образ `emspb:b6e361a` (snolla 0.28.4), cutover LIVE 2026-07-02, DNS emspb.ru/www→89.253.255.94. **Суперсидит** пин `b6e361a`. (Пересоздан из `emspb-deploy-snolla-0-42-0` — слаг выровнен на реальный пин 0.42.1 по коррекции workshop.) + +Консюмер-бамп ЗАПУШЕН: `victor/emspb.ru` master `95a5c42` (пин 0.42.1 + yarn.lock: snolla 0.42.1 / core 0.24.1 / data 0.14.1 / liquid 0.10.2). + +## Класс: in-place прод-обновление (НЕ greenfield staging) +Собрать/pull образ 0.42.1 → **admin подтверждает боевой apply с ОПЕРАТОРОМ ПЕРЕД подменой тега** на живом стеке 18 → swap. Rollback = `emspb:b6e361a` (+ RUVDS-IIS 80.64.31.36). + +## Источник +`victor/emspb.ru` @ `95a5c42` — `deploy/Dockerfile` (multi-stage node:22-slim non-root, build-arg `VERDACCIO_TOKEN` build-time, healthcheck /robots.txt) + `deploy/README.md` (env-лист, секреты через env) + корневой `.dockerignore`. Dockerfile version-agnostic — пин тянется из package.json/yarn.lock через `yarn install --immutable`. + +## Dev-верификация (сделано в emspb-сессии — админ перепроверяет на образе) +- 43/43 тестов GREEN на 0.42.1 (viewModel-graph-перепил ядра, `includeX`-запекание выпилено — регрессии ноль). +- Completeness-gate: 29 боевых sitemap-роутов + краул → 0 live-200→local-404 (нет скрытого galleries/feed page-type). +- Локальный `docker build` OK; секреты НЕ запечены (history чист, `config/default.json` отсутствует в образе); контейнер healthy; image-sweep 29 роутов + robots/sitemap/theme.css/3.jpg = все 200. + +## Acceptance (на НОВОМ 0.42.1-образе ДО подмены — не наследовать GREEN) +1. Собрать на VDS из чистого git-archive `95a5c42` → `registry.kzntsv.site/emspb:95a5c42` → push. +2. Контейнер healthy (healthcheck /robots.txt). +3. Completeness-gate на образе: 29 sitemap-роутов → 200, canonical 301 (trailing/lowercase/collapse //), theme-ассеты из MinIO, `/images/3.jpg` 200. **Гнать смоук С VDS** — воркстейшн перехватывает прод-домены в LAN-DNS. +4. **Боевой apply (swap тега на стеке 18) — с подтверждения оператора.** Rollback `emspb:b6e361a` наготове. + +## Guards +- Секреты в образ/git — НЕТ (env-only, кросс-проверено локально). +- VERDACCIO_TOKEN печётся в ARG/ENV build-стадии → build-secret (известный follow-up, как на tandemmebel; НЕ блокер — runtime-стадия отдельная, токена в финальном образе нет). +- LF/CRLF в HTML — косметика, НЕ чинить. + +## Обязательные скилы — вызвать до начала +- invoke `using-tasks` — статус задачи +- invoke `project-discipline` — дисциплина +- invoke `using-vds-ops` — диагностика контейнеров на VDS +- invoke `using-wiki` — обновить рунбук `emspb-vds-deploy-runbook` под 0.42.1 + +**TDD:** n/a (ops-деплой). **Разрешения:** ops-задача админ-сессии. +**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 +**Notify:** victor/emspb.ru + + +---