meta(handoff): S1 APPROVE + деплой отложен до S2 (полный срез); урок про деплой-гейты

S1 (camel-нормализация admin-api) — ревью APPROVE, финайдинги закрыты (F1 page-part-templates
переведён). Деплой ОТЛОЖЕН по решению snolla+оператор: S1 без camel-клиента не выкатываем,
деплой одним срезом после S2. Образ 2ffd66a собран на VDS, не запушен, live = ca0dfa3.
pilorama98 auto-numbering прогнан (таска 🟢). Память: optional-other-project-task-not-a-deploy-gate.
This commit is contained in:
2026-08-04 21:00:36 +03:00
parent 5d66a86ee3
commit c5166d88f0

View File

@@ -1,52 +1,71 @@
--- ---
_last_updated_: 2026-08-04T16:35:00Z _last_updated_: 2026-08-04T18:05:00Z
session_id: 2026-08-04-loader-admin-api-coord session_id: 2026-08-04-admin-api-s1-coord
prev_session_id: 2026-08-04-minio-config-flip-sweep prev_session_id: 2026-08-04-loader-admin-api-coord
--- ---
# Next session handoff # Next session handoff
## 2026-08-04 — Координация loader-миграции + деплой admin-api ЗАВЕРШЕНЫ. Остались MinIO-retire (≈ 05.08) и kreknin-ремонт. ## 2026-08-04 — S1 ревью APPOVE'd, деплой ОТЛОЖЕН до конца эпика (S2). Координация активна.
### Эта сессия (loader/admin-api) — ✅ ВСЁ ЗАКРЫТО ### Что было в этой сессии
- **Координация `loader-migrate-to-admin-api-client`** (pilorama98): identity PASS на staging - **Ревью S1 (admin-api camel-нормализация)** — APPROVE с финайдингами. Проверено сам:
(229/3327), прод-импорт через API **выполнен** (224 строки, 0 ошибок, ~2070 API-вызовов чисто). mapper (case-map.ts, unit 12/12), delete-нормализация (9 ресурсов `DELETE /:id`), envelope
Таска pilorama98 🟢 done. Мои роли: координатор + ревьюер (обе стороны) — закрыты. `{success,data,total}`, error-shape, тесты delete-релевантные 58/58 против staging. Полный 422/422
- **Деплой admin-api**: стек 25 LIVE (`admin-api.vds.kzntsv.site`, образ `ca0dfa3`, LE, ключ проходит). гонял snolla. F1 (page-part-templates) — snolla перевёл, F2/F3 приняты.
ESM-гоча (extensionless imports) починена snolla. Compose source-of-truth закоммичен (`cd76ce8f`). - **Деплой S1 — ОТМЕНЁН/отложен** по решению snolla+оператор (21:00Z): S1 = camel-wire без
- **Infra**: ApiKeys DDL на обоих проде (vds + stostayer); MoreThenCms прод-лог 10ГБ→1ГБ (SIMPLE camel-клиента — не выкатываем. Деплой = один чистый срез всего эпика после S2 (клиент 0.3.x camel
recovery — кап-риск Express снят); staging `MoreThenCmsStaging` создана + staging admin-api 4732. + loader-миграция). Live admin-api остаётся на `ca0dfa3` (Pascal), здоров.
- Ключ pilorama98 `sk_6a83…`**не ротировать** (решение vitya). Memory: `admin-api-vds-deploy`, - **Образ `admin-api:2ffd66a` СОБРАН на VDS** (`~/build/admin-api-2ffd66a`, контекст завезён tar'ом,
`morethencms-simple-recovery-log-shrink`. docker build ✅), **НЕ запушен в registry**. Держим готовым; если к S2 будут доп-коммиты — собирать
свежий тег.
- **pilorama98**: auto-numbering живой прогон выполнен (224 update/0 create, exit 0, таска 🟢).
Гейт деплоя был снят, но стал неактуален (деплой отложен).
### 1. Retire старых minio-данных — ⏳ окно ≈ до 2026-08-05 (из прошлой сессии) ### Косяки сессии (признать, не повторять)
- `rm -rf /usr/docker/minio/data` (12G, shared 2020) + `docker volume rm bookva-minio-data` - Возвёл 🔴 loader-auto-numbering pilorama98 в блокер деплоя S1 — хотя на проводе не было активного
ТОЛЬКО после подтверждения стабильности (live GREEN держится с 2026-08-03). Rollback = PUT стек 30/49. потребителя (loader — разовый CLI, прод-импорт уже выполнен). 3.5ч простоя. Память:
`optional-other-project-task-not-a-deploy-gate`. Правило: гейт деплоя оправдан ТОЛЬКО при реальном
in-flight потребителе на проводе.
- Дёрганье по деплою (собрал → остановили). Финальное решение: деплой одним срезом после S2.
### 2. kreknin-repair-md3-rebuild — ⚪ ждёт (из прошлой сессии) ### Следующая сессия (S2)
- Rescue done (2026-08-02). Осталось: power-off → перетык SATA → Repair md3 → scrub. **Бэкапы - Ждём пинг от snolla: «S2 готов» (клиент 0.3.x camel + loader-миграция pilorama98). Тогда:
(vds+books-vds) ВЫКЛЮЧЕНЫ с 31.07 — вернуть после ремонта** (критичный хвост). Всё: 1. Если были доп-коммиты в admin-api — собрать свежий тег на VDS (контекст `~/build/admin-api-*`,
`.tasks/kreknin-repair-md3-rebuild.md` + `.wiki/entities/kreknin-synology.md`. Dockerfile `packages/admin-api/Dockerfile`, build на VDS — registry large-push 499 gotcha).
2. Обновить `admin/host-stacks/vds-kzntsv/admin-api.compose.yml` (ca0dfa3 → новый тег).
3. Применить через Portainer PUT (стек 25, pullImage:true, env сохранить, PS 5.1 round-trip
кириллица gotcha — качать байтами/UTF-8).
4. Smoke: curl --resolve admin-api.vds.kzntsv.site:443:89.253.255.94 (мимо LAN-DNS), health +
list-эндпоинты с camel-ключами.
- Координатор-loader таска — закрыта (миграция done). Роль: ревьюер admin-typed-api для S2.
- API-ключ pilorama98 `sk_6a83…`НЕ ротировать (решение vitya).
### 3. Дефолтные/опциональные (из прошлой сессии) ### Open треки (параллельно, из прошлых handoff)
- P3 imgproxy stack 29 retire / A3 bookva-дубли — опционально. | Трек | Готовность | Entry-point |
- Кэш тасков refresh (projects-meta) — отложен; `meta_restart_poller` не force-restart пока агенты заняты. |---|---|---|
| minio-retire старых данных (12G, `rm -rf /usr/docker/minio/data` + `volume rm bookva-minio-data`) | окно ≈ до 05.08 — подтвердить у vitya; rollback = PUT стек 30/49 | из handoff 2026-08-04 |
| kreknin-repair-md3-rebuild | ⚪ ждёт координации с Алексеем (power-off → перетык SATA → Repair md3 → scrub); бэкапы ВЫКЛЮЧЕНЫ до ремонта | `.tasks/kreknin-repair-md3-rebuild.md` + `.wiki/entities/kreknin-synology.md` |
| P3 imgproxy stack 29 retire / A3 bookva-дубли | опционально | из handoff 2026-08-04 |
### Спроси user'а ### Спроси user'а
- Retire старых minio-данных (подтвердить ~2026-08-05). - Подтвердить minio-retire (окно закрывается ~05.08).
- Запуск kreknin-ремонта (координация с Алексеем). - Стартовать kreknin-ремонт (координация с Алексеем).
- (если S2 готов) команда на деплой полного среза.
### Не делать (preemptive guards) ### Не делать (preemptive guards)
- **НЕ ротировать** API-ключ pilorama98 `sk_6a83…` (решение vitya). - НЕ деплоить S1 в одиночку (только полный срез после S2).
- **НЕ трогать** прод admin-api (стек 25) — работает; staging 4732 жив для dev. - НЕ ротировать API-ключ pilorama98 `sk_6a83…`.
- НЕ удалять старые minio-данные до окна и без подтверждения; НЕ вернуть бэкапы до kreknin-ремонта. - НЕ трогать live admin-api (стек 25, ca0dfa3) без сигнала.
- НЕ удалять старые minio-данные до окна и без подтверждения; НЕ возвращать бэкапы до kreknin-ремонта.
- НЕ лезть в snolla-код самому — через snolla-сессию (.admin деплоит). - НЕ лезть в snolla-код самому — через snolla-сессию (.admin деплоит).
- НЕ PS для Portainer (кириллица); креды → `pass`; стеки через Portainer, не ssh compose. - НЕ PS для Portainer (кириллица); креды → `pass` (vds-kzntsv/full-env); стеки через Portainer, не ssh compose.
- НЕ возводить опциональные таски других проектов в деплой-гейты без активного потребителя на проводе.
### Коммиты сессии (.admin) ### Коммиты сессии
- `cd76ce8f` feat(admin-api) — деплой admin-api (стек 25). `27de23ea` meta(admin) — координатор - Нет новых коммитов в .admin за сессию (деплой не выполнялся; ревью — координация, не код).
loader (ApiKeys DDL). (с этим хэндоффом — status-обновления coord-таски). Следующий commit = обновление compose под S2-деплой.
### Memory updates за сессию ### Memory updates за сессию
- `admin-api-vds-deploy` — деплой + ESM-гоча + первый консьюмер. - `optional-other-project-task-not-a-deploy-gate` — новый (урок про деплой-гейты).
- `morethencms-simple-recovery-log-shrink` — SIMPLE recovery + MoreThenCmsStaging. - `admin-api-vds-deploy` — актуален; добавить: образ 2ffd66a собран но не запушен, деплой S1 отложен до S2.