From b8a07fee85d4ad66a1adb4c876cf27f99487a591 Mon Sep 17 00:00:00 2001 From: vitya Date: Sat, 30 May 2026 09:03:13 +0300 Subject: [PATCH] tasks(vehicles-loader-progress-deploy): 0.4.0 deployed, verify pending 06:21 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build здесь → push docker.stostayer.ru/vehicles-loader:0.4.0 → на хосте клиента pull + re-tag :latest=0.4.0 (0.3.0 retained для rollback). Acceptance #1 закрыт. Verify journalctl ждёт natural-прогона Sun 2026-05-31 06:21 MSK (user выбрал natural-окно, без baseline-reset). Open Q #1 снят: a74ef73 уже в origin/master. Co-Authored-By: Claude Opus 4.8 (1M context) --- .tasks/STATUS.md | 9 ++--- .tasks/vehicles-loader-progress-deploy.md | 42 ++++++++++++++--------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index af814dd..bb0bc2d 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1,4 +1,5 @@ # Admin Task Board +_Updated: 2026-05-30 — 🟡 `vehicles-loader-progress-deploy`: деплой 0.4.0 ВЫПОЛНЕН (build здесь → push `docker.stostayer.ru` → host pull + re-tag `:latest`=0.4.0, 0.3.0 retained). Acceptance #1 ✅. Verify-окно = natural (user-выбор, не форсим baseline → клиент без внепланового email). timer next trigger Sun 2026-05-31 06:21 MSK → live-verify journalctl в след. сессию. Open Q #1 (push кода) снят: `a74ef73` уже в origin/master._ _Updated: 2026-05-30 — заведена ⚪ `vehicles-loader-progress-deploy` (handoff из stostayer.new). Progress-logging 0.4.0 зашипан в коде (stostayer.new `a74ef73`, 24/24 теста); ops-follow-up — rebuild образа той же схемой (build здесь → push `docker.stostayer.ru` → host pull+re-tag) и снять `journalctl` с боевого прогона (закрывает не-верифицированный 5-й критерий «journalctl показывает движение»). Попутно добивает остаток email-SEND из `vehicles-loader-image-distribution`._ _Updated: 2026-05-29 — 🟢 `vehicles-loader-image-distribution` **closed**: канал поставки = собственный registry клиента `docker.stostayer.ru`, build у нас (verdaccio-депы запекаются → клиенту verdaccio не нужен), без Portainer (oneshot + systemd-timer). Доки финализированы (stostayer.new `e55cfba`). Открытие `pass stostayer/client` показало свою инфру клиента (Portainer+registry) → развилка A/B пересмотрена. Фактический prod-деплой — follow-up, ждёт grant'а._ _Updated: 2026-05-29 — **РЕЦИДИВ того же инцидента, диагноз сменён.** Вчерашняя гипотеза «оператор в cutover» **опровергнута**. Истинная причина: ES публиковал `0.0.0.0:9200` мимо traefik (free-ES без auth) → **ransom-бот** удалял индексы by-name (мимо Control #1), оставлял `read_me` с BTC-выкупом. accessLog (Control #2) пуст — бот шёл прямо в порт. **Control #3 (fix):** убрана публикация host-порта (Portainer PUT stack 33) → дыра закрыта; `epz/products/artmone` restore из `daily-2026-05-25`. Второй, отдельный баг: epz-поиск падал у ОБОИХ тенантов — `config.get("tenant")` (node-config) не задан ни в `default.json`, ни в env-маппинге, `TENANT` env был мёртвым грузом → добавил `tenant` в overlay `default.json` (slovo/bookva), резолвится, ошибки прекратились (products работал — другой код-путь). accessLog откатан (сторожил не ту дверь). Exposure-audit → ⚪ `harden-books-vds-exposed-ports`. См. `.wiki/concepts/es-destructive-delete-incident-2026-05-26.md` § «Рецидив 2026-05-29»._ @@ -23,11 +24,11 @@ _Updated: 2026-05-26 — заведена `bookva-tenant-cutover-prep` ⚪ (7-st _Updated: 2026-05-25 (`iis-migration-to-ruvds` 🟢 closed Phase 1 per user decision — 9/24 hostnames live на RUVDS, source IIS оставлен running. `migrate-elasticsearch-to-books-vds` 🟢 closed ранее сегодня. 16 IIS hostnames + LE renewal pipeline + decommission — descoped в Closure note, не отдельные tracker tasks.)_ -## ⚪ [vehicles-loader-progress-deploy] — задеплоить vehicles-loader **0.4.0** (прогресс-логирование) на прод клиента + live-verify journalctl. Handoff из stostayer.new (код-таска `vehicles-loader-progress-logging` 🟢 closed by-inspection, commit `a74ef73`). См. [vehicles-loader-progress-deploy.md](vehicles-loader-progress-deploy.md). +## 🟡 [vehicles-loader-progress-deploy] — задеплоить vehicles-loader **0.4.0** (прогресс-логирование) на прод клиента + live-verify journalctl. Handoff из stostayer.new (код-таска `vehicles-loader-progress-logging` 🟢 closed by-inspection, commit `a74ef73`). См. [vehicles-loader-progress-deploy.md](vehicles-loader-progress-deploy.md). -**Status:** ready -**Where I stopped:** (not started) — код 0.4.0 на master stostayer.new (НЕ запушен, Rule 4); образ 0.3.0 на проде, нужен rebuild. -**Next action:** build здесь → push `docker.stostayer.ru/vehicles-loader:0.4.0` → host pull + re-tag `:latest` → дождаться/прогнать sync на changed-выгрузке → `journalctl -u vehicles-loader.service` показывает фазы+батчи+delete-sweep. +**Status:** paused — деплой выполнен, ждём боевого прогона для verify +**Where I stopped:** 0.4.0 собран здесь + запушен в `docker.stostayer.ru` + на хосте pull+re-tag `:latest`=0.4.0 (0.3.0 retained). Acceptance #1 ✅. Verify-окно = natural (user). timer next trigger Sun 2026-05-31 06:21:36 MSK. +**Next action (след. сессия после 06:21 MSK 31.05):** `ssh victor@new.stostayer.ru:20435` → `sudo journalctl -u vehicles-loader.service --since '2026-05-31 06:00'` — убедиться что видно ▶/батч-прогресс/✓/delete-sweep (не тишина), importRun новый `ok`-ряд, email ушёл → закрыть 🟢. **Blocker (soft):** push stostayer.new master ИЛИ build из локального дерева (commit `a74ef73` пока локальный). **Branch:** n/a diff --git a/.tasks/vehicles-loader-progress-deploy.md b/.tasks/vehicles-loader-progress-deploy.md index c9470be..7503398 100644 --- a/.tasks/vehicles-loader-progress-deploy.md +++ b/.tasks/vehicles-loader-progress-deploy.md @@ -24,17 +24,20 @@ pull + re-tag), затем дождаться/прогнать sync и снят ## Pending ops actions -- [ ] **Build & push** на dev-машине из корня `stostayer.new` (та же схема, что 0.3.0, - см. `vehicles-loader-image-distribution` closed-блок): - `docker build -f packages/vehicles-loader/Dockerfile -t docker.stostayer.ru/vehicles-loader:0.4.0 .` - `docker push docker.stostayer.ru/vehicles-loader:0.4.0` - (verdaccio-депы запекаются при build здесь — клиенту verdaccio не нужен.) -- [ ] **На хосте клиента:** `docker pull docker.stostayer.ru/vehicles-loader:0.4.0` + - re-tag `:latest` (systemd-юнит запускает `:latest`). -- [ ] Дождаться планового прогона (systemd timer 06:20 MSK) **или** прогнать вручную - `systemctl start vehicles-loader.service` на changed-выгрузке (на unchanged будет - `skipped-unchanged`, прогресса не будет — нужен изменённый zip или сброс baseline). -- [ ] **Live-verify:** `journalctl -u vehicles-loader.service -f` (или `--since`) — видны +- [x] **Build & push** на dev-машине из корня `stostayer.new` (2026-05-30): образ + `docker.stostayer.ru/vehicles-loader:0.4.0` собран (811MB, digest + `sha256:f2e10b1f090ba47f9b5de83b84f91c5ce827ecaf1e94bc0331f2d6773f85845a`), + `docker login` BA-кредами → `docker push` (общие слои с 0.3.0, докинуты только app-слои). + verdaccio-депы из `.yarn/cache` запеклись при build. +- [x] **На хосте клиента** (ssh `victor@new.stostayer.ru:20435`, docker через `sudo -S`): + `docker pull …:0.4.0` (digest совпал) + `docker tag …:0.4.0 vehicles-loader:latest`. + `:latest` теперь `0f8a4dd46236` = 0.4.0; 0.3.0 (`5407c0563e44`) оставлен под rollback. +- [ ] Дождаться планового прогона — **systemd timer next trigger `Sun 2026-05-31 06:21:36 MSK`** + (timer `enabled`, `active (waiting)`). Verify-окно выбрано user'ом = natural 06:20 + (не форсим baseline-reset — клиент не получает внепланового email). На unchanged будет + `skipped-unchanged`; 1С перезапишет файл в 6:00 → 06:21 прогон на changed-выгрузке. +- [ ] **Live-verify (СЛЕДУЮЩАЯ СЕССИЯ после 06:21 MSK 31.05):** + `journalctl -u vehicles-loader.service --since '2026-05-31 06:00'` — видны `▶ … start`, периодический батч-прогресс, `✓ … done`, per-model delete-sweep. ## Acceptance criteria @@ -48,16 +51,21 @@ pull + re-tag), затем дождаться/прогнать sync и снят ## Decisions log +- 2026-05-30: **build+push+host-deploy выполнены.** Образ 0.4.0 собран здесь, запушен в + `docker.stostayer.ru`, на хосте pull + re-tag `:latest` → 0.4.0. 0.3.0 retained для rollback. +- 2026-05-30: open question #1 (push кода) снят — `a74ef73` оказался **уже в origin/master** + (`git branch -r --contains a74ef73` → origin/master), дерево чистое. Билдил из чистого дерева, + Rule-4-вопроса нет. +- 2026-05-30: open question #2 (verify-окно) решён user'ом = **ждём natural 06:20** (Sun 31.05), + НЕ форсим baseline-reset. Причина: форс = внеплановое email-письмо клиенту + спурьёзный + ре-импорт; natural-прогон и так = боевой acceptance. Trade-off: verify unattended, в след. сессии. - 2026-05-30: заведено из `stostayer.new` session по явному указанию (закрыть код-таску - by-inspection, live-verify вынести в .admin как deploy-follow-up). Push кода НЕ сделан - (Rule 4) — деплою предшествует push master или build из локального дерева. + by-inspection, live-verify вынести в .admin как deploy-follow-up). ## Open questions -- [ ] Push `stostayer.new` master нужен до build, или билдим из локального рабочего дерева? - (commit `a74ef73` пока только локально.) -- [ ] Где взять changed-выгрузку для немедленной проверки, или ждём естественного изменения - `units.json` к ближайшему 06:20? +- [x] ~~Push `stostayer.new` master нужен до build?~~ — нет, `a74ef73` уже в origin/master. +- [x] ~~Где взять changed-выгрузку?~~ — ждём natural 06:21 Sun 31.05 (1С перезапишет файл в 6:00). ## Notes