meta(handoff): loader-migration + admin-api deploy CLOSED; handoff на next session

Эта сессия: координация loader-migrate-to-admin-api-client завершена (identity PASS +
прод-импорт через API, 0 ошибок), admin-api стек 25 LIVE. Coord-таска финал. Handoff
пишет на следующий разворот: MinIO-retire (≈05.08) + kreknin-ремонт + вернуть бэкапы.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-08-04 19:37:06 +03:00
parent cd76ce8f3f
commit 5d66a86ee3
2 changed files with 57 additions and 53 deletions

View File

@@ -1,69 +1,52 @@
---
_last_updated_: 2026-08-04T11:50:00Z
session_id: 2026-08-04-minio-config-flip-sweep
prev_session_id: 2026-08-03-minio-split-track-a-done
_last_updated_: 2026-08-04T16:35:00Z
session_id: 2026-08-04-loader-admin-api-coord
prev_session_id: 2026-08-04-minio-config-flip-sweep
---
# Next session handoff
## 2026-08-04 — MinIO config sweep DONE: устаревшие `minio.kzntsv.site` → `minio.vds.kzntsv.site` в конфигах проектов. Крекнин ждёт Алексея. Retire старых minio-данных — окно до 2026-08-05.
## 2026-08-04 — Координация loader-миграции + деплой admin-api ЗАВЕРШЕНЫ. Остались MinIO-retire (≈ 05.08) и kreknin-ремонт.
### 0. MinIO config sweep (эта сессия) — ✅ DONE, запушено
Флипнул устаревшие endpoint-ссылки `minio.kzntsv.site``minio.vds.kzntsv.site` (CMS-медиа авторитетно на vds):
- `pilorama98.ru` apps/loader/config/default.json (`1f55fdd`)
- `artmone.pro` apps/web/config/default.example.json (`fb5237d`); **default.json gitignored → локально только**
- `MoreThenCms` fileStorageClients-s3.sample.config, 6 endpoint (`54f9f4c6`)
- `emspb.ru` deploy/README.md (`63e7a16`)
- `snolla` framework defaults 3 файла (app/content-api/admin-api) (`a1640f9`) + **inbox-письмо snolla отправлено** (учёт при следующем publish)
- `.admin` host-stacks compose comments ×5 (`9fbc44c3`)
- `modulair-rag/.env`**gitignored, локально** (endpoint→vds + bucket→modulair-rag, сверено с прод-стеком 15)
### Эта сессия (loader/admin-api) — ✅ ВСЁ ЗАКРЫТО
- **Координация `loader-migrate-to-admin-api-client`** (pilorama98): identity PASS на staging
(229/3327), прод-импорт через API **выполнен** (224 строки, 0 ошибок, ~2070 API-вызовов чисто).
Таска pilorama98 🟢 done. Мои роли: координатор + ревьюер (обе стороны) — закрыты.
- **Деплой admin-api**: стек 25 LIVE (`admin-api.vds.kzntsv.site`, образ `ca0dfa3`, LE, ключ проходит).
ESM-гоча (extensionless imports) починена snolla. Compose source-of-truth закоммичен (`cd76ce8f`).
- **Infra**: ApiKeys DDL на обоих проде (vds + stostayer); MoreThenCms прод-лог 10ГБ→1ГБ (SIMPLE
recovery — кап-риск Express снят); staging `MoreThenCmsStaging` создана + staging admin-api 4732.
- Ключ pilorama98 `sk_6a83…`**не ротировать** (решение vitya). Memory: `admin-api-vds-deploy`,
`morethencms-simple-recovery-log-shrink`.
**НЕ флипал (проверено mc, корректны):** books packages/config (16), books-tools, docker/infobox books-*, slovo-overlay config-templates, modules-db (.env*, бакет `modules` на books-vds — вне сплита), bookva-overlay composes.
**Наблюдения:** books-vds shared держит полные копии CMS-медиа (дубли vds); на vds typo-бакет `atrmone`.
**Закрыто:** morethencms-s3-filestorage-provider (по оператору «сделано давно»).
### 1. Retire старых minio-данных — ⏳ окно ≈ до 2026-08-05 (из прошлой сессии)
- `rm -rf /usr/docker/minio/data` (12G, shared 2020) + `docker volume rm bookva-minio-data`
ТОЛЬКО после подтверждения стабильности (live GREEN держится с 2026-08-03). Rollback = PUT стек 30/49.
### 1. MinIO split Track A — ЗАКРЫТ (live GREEN, прозрачный апгрейд)
Оба инстанса books-vds переведены `RELEASE.2020-07-13``RELEASE.2025-09-07T16-13-09Z` (тот же digest что vds minio, креды `AKIAJ2…` не тронуты):
- **shared `minio` (стек 30, minio.kzntsv.site):** зеркало 17 бакетов → `/usr/docker/minio/data-new`, Portainer swap, traefik/imgproxy/books-api/task-runner/job-scheduler — GREEN. Rollback: старый `/usr/docker/minio/data` жив.
- **`bookva-minio` (стек 49):** зеркало `books` (38692 obj) → том **`bookva-minio-data-new`** (rename НЕдоступен — старый docker daemon прячет `volume rename`; имя осталось `-new`). bookva-api/task-runner GREEN. Rollback: `bookva-minio-data` (2020) + 2020 image.
- **Бэкап-скрипт обновлён** (репо + хост `/opt/stacks/backup/run.sh`) на новые пути: `/usr/docker/minio/data-new`, `/var/lib/docker/volumes/bookva-minio-data-new`.
- Gotchas записаны в runbook Track A (§ прогресс): mc multipart-баг`--disable-multipart`; параллельные зеркала → транзиентные сбои на 3.8G хосте → **последовательно + retry**; CRLF compose → `tr -d '\r'`; 2025 minio на kernel 3.10 (CentOS 7 EOL) — WARN о perf, работает.
### 2. kreknin-repair-md3-rebuild — ⚪ ждёт (из прошлой сессии)
- Rescue done (2026-08-02). Осталось: power-off → перетык SATA → Repair md3 → scrub. **Бэкапы
(vds+books-vds) ВЫКЛЮЧЕНЫ с 31.07 — вернуть после ремонта** (критичный хвост). Всё:
`.tasks/kreknin-repair-md3-rebuild.md` + `.wiki/entities/kreknin-synology.md`.
### 2. Retire старых данных — ⏳ ЧЕРЕЗ 48ч (≈ 2026-08-05)
Старые 2020-данные держать как откат до ~2026-08-05, потом:
- `rm -rf /usr/docker/minio/data` (12G, shared 2020) — ТОЛЬКО после подтверждения стабильности.
- `docker volume rm bookva-minio-data` (2020) — после подтверждения.
- До этого: rollback = Portainer PUT стека 30/49 на 2020 image + старый путь/том.
### 3. Крекнин-ремонт — ЗАВТРА (2026-08-04, координация с Алексеем)
План: `.tasks/kreknin-repair-md3-rebuild.md` + `.wiki/entities/kreknin-synology.md`. Power-off → перетык SATA → Repair md3 → scrub → VMM. **Бэкапы выключены с 31.07** (vds-backup 05:00 + books-vds-backup 06:00) — **вернуть после ремонта** (критичный хвост). Rescue `/mnt/rescue` не отключать. Примечание: бэкап-скрипт books-vds уже указывает на новые minio-пути — ок.
### 4. Кэш тасков стейл — refresh ОТЛОЖЕН
projects-meta tasks.json sync 2026-07-22 (stale). `meta_restart_poller force=false` отказал (4 активных агента). НЕ force-restart пока агенты заняты.
### 3. Дефолтные/опциональные (из прошлой сессии)
- P3 imgproxy stack 29 retire / A3 bookva-дубли — опционально.
- Кэш тасков refresh (projects-meta) — отложен; `meta_restart_poller` не force-restart пока агенты заняты.
### Спроси user'а
- Retire старых minio-данных: подтвердить через ~48ч (или сделать это самому, если GREEN держится).
- books-vds imgproxy (стек 29) — вывести из эксплуатации? (P3; сейчас imgproxy.kzntsv.site → vds, books-vds imgproxy читает minio:9000, кажется мёртвым грузом).
- A3: чистка bookva-дублей в shared `books` (минор, не срочно).
### Открытые треки
| Трек | Готовность | Entry-point |
|---|---|---|
| Retire старых minio-данных (48ч) | ⏳ до 2026-08-05 | `minio-split-cutover-runbook` §P3 |
| kreknin-repair-md3-rebuild | завтра | `.tasks/kreknin-repair-md3-rebuild.md` |
| Бэкапы (vds+books-vds) вернуть | после kreknin-ремонта | cron на хостах |
| P3 imgproxy stack 29 retire / A3 дубли | опционально | runbook §P3 |
| Кэш тасков refresh | отложен | `meta_restart_poller` после освобождения агентов |
- Retire старых minio-данных (подтвердить ~2026-08-05).
- Запуск kreknin-ремонта (координация с Алексеем).
### Не делать (preemptive guards)
- **НЕ force-restart поллера** пока активные агенты.
- **НЕ лезть в snolla-код самому** — через snolla-сессию (.admin деплоит).
- НЕ трогать rescue-диск; НЕ забыть вернуть бэкапы после ремонта.
- НЕ удалять старые minio-данные до 48ч окна (и без подтверждения).
- НЕ PS для Portainer (кириллица); креды → `pass`.
- **НЕ ротировать** API-ключ pilorama98 `sk_6a83…` (решение vitya).
- **НЕ трогать** прод admin-api (стек 25) — работает; staging 4732 жив для dev.
- НЕ удалять старые minio-данные до окна и без подтверждения; НЕ вернуть бэкапы до kreknin-ремонта.
- НЕ лезть в snolla-код самому — через snolla-сессию (.admin деплоит).
- НЕ PS для Portainer (кириллица); креды → `pass`; стеки через Portainer, не ssh compose.
### Коммиты сессии (.admin)
- `scripts/books-vds-backup-daily-kreknin/{run.sh,README.md}`, `.wiki/entities/books-vds.md`, `.wiki/concepts/minio-split-cutover-runbook.md` — Track A done + пути бэкапа на новые тома. (с этим хэндоффом).
- `cd76ce8f` feat(admin-api) — деплой admin-api (стек 25). `27de23ea` meta(admin) — координатор
loader (ApiKeys DDL). (с этим хэндоффом — status-обновления coord-таски).
### Memory updates
- `books-vds-minio-upgraded-2025-volume-names` — новые пути живых данных (data-new, bookva-minio-data-new), rename недоступен, mc `--disable-multipart`, последовательные зеркала.
### Memory updates за сессию
- `admin-api-vds-deploy` — деплой + ESM-гоча + первый консьюмер.
- `morethencms-simple-recovery-log-shrink` — SIMPLE recovery + MoreThenCmsStaging.

View File

@@ -32,6 +32,27 @@
## Текущий статус
- 🟢 **2026-08-04T16:30Z — ПРОД-ИМПОРТ ЧЕРЕЗ API ВЫПОЛНЕН, ВСЁ ЗАКРЫТО.**
pilorama98: exit 0, 224 rows, products 224 update/0 create, pages 32, price-tables 25.
Прод admin-api: ~2070 API-вызовов, 0 ошибок (только внешние 401-пробы на /, /robots.txt).
Read-back: 229 products, контент на месте. Миграция 100% (координация + ревью + деплой + прод).
- 🟢 **2026-08-04T16:17Z — МИГРАЦИЯ ЗАВЕРШЕНА. Таска pilorama98 🟢 done.**
Все acceptance 14 выполнены (identity PASS, bin/* через store, TDD 105/105, ключ gitignored).
baseUrl переключён на прод `https://admin-api.vds.kzntsv.site`. **Координация закрыта.**
Остаётся операционный шаг: реальный прод-импорт (`node bin/index.js`, store:api) — решение
vitya; рекомендация — через identity-check против прод-эндпоинта.
- 🟢 **2026-08-04T16:16Z — ротация ключа: РЕШЕНО не ротировать** (vitya: «на ключ похуй»,
риск приватного Gitea принят). Ключ `sk_6a83…` остаётся. Вопрос закрыт.
- 🟢 **2026-08-04T15:42Z — IDENTITY PASS ✅, миграция по коду ЗАКРЫТА.**
- Ошибки (оператор прав): (1) 400 на числовом sku → `String()` с null-guard; (2) toLegacyTag
без content → 86 breadcrumbs-diff. Пофикшены (665006f, 105/105).
- identity-check.js харнесс ревьюнут (оба пути→staging, полевой diff content, --fresh).
**PASS: 229 products / 3327 variants идентичны** (API vs DB). Acceptance №1 закрыт.
- Прод-cutover: admin-api прод жив (`https://admin-api.vds.kzntsv.site`), pilorama98
переключает baseUrl; staging-PASS достаточно, прод-прогон опционален.
- 🟢 **2026-08-04T15:36Z — ДЕПЛОЙ admin-api LIVE на vds.** `admin-api.vds.kzntsv.site`
(стек 25, образ ca0dfa3 ESM-фикс). /health ok, LE-серт выдан, ключ pilorama98 проходит.
Prod-эндпоинт для loader'а после identity. Compose source-of-truth закоммичен (cd76ce8f).
- 🔵 **2026-08-04T15:26Z — деплой admin-api: стек 25 создан, блокер в Dockerfile.**
- Образ `admin-api:e1540de` собран+запушен. Стек 25 (`admin-api.vds.kzntsv.site`, env 8/8,
proxy-сеть, mem_limit 512m) создан. **Контейнер крашится**: ESM `ERR_MODULE_NOT_FOUND`