Files
admin/.tasks/NEXT_SESSION.md
vitya e82b9a905f tasks(books-ops-mcp-host-promote): завести ready + handoff refresh
Trigger: deploy run#437/439 валился на bookva-ops-mcp restart-loop. Hot-fix
`bookva-overlay 437d024` (idle-stub command) выкачен как interim — deploy run#440
зелёный. User ideology clarification: books VDS = наш host, slovo/bookva =
клиентские стэки, ops-mcp host-level (один экземпляр на VDS, не per-tenant).

Tracker capture'ит 10-step playbook + 5 design Qs (где жить host compose,
deploy mechanism, MARIADB_PASSWORD scope, config volume path, audit прочих
host-level кандидатов). hot-fix temporary до promote.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 13:55:05 +03:00

92 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
_last_updated_: 2026-05-26T23:55:00+03:00
session_id: 2026-05-26-ops-mcp-host-promote-track
---
# Next session handoff
## Recent commits
- `victor/bookva-overlay 437d024` — fix(deploy): bookva-ops-mcp idle-stub command (tail -f /dev/null) — hot-fix deploy run#437/439 restart-loop fail; interim до host-promote
- `.admin × 1` — tasks: завести `books-ops-mcp-host-promote` ⚪ + refresh handoff
- `.wiki b2528fb` — wiki(concepts): ingest 3 generic ops-gotchas from bookva tenant-split (manual write, MCP commitFile bug)
- `victor/books c434230` — deploy.yml: auto-deploy default tenant=slovo → all (symmetric rollout active)
- `victor/bookva-overlay 2862279` — traefik labels: entrypoints=https + certresolver=letsEncrypt (books-VDS instance naming)
- `victor/bookva-overlay 5474b10` — elasticsearch.compose.yml: add reindex.remote.whitelist=elasticsearch:9200
- `victor/bookva-overlay b324e12` — add bookva-minio + external port-bind для bookva-db
- `victor/bookva-overlay 8bffd68` — *.compose.yml: drop depends_on (per-stack model)
- `victor/bookva-overlay 2b20a3e` — api.compose.yml: remove traefik (internal-only per design v3)
- `victor/bookva-overlay 93c2ea2` — mongo.compose.yml: pin mongo:4.2 (WT format compat)
- `victor/bookva-overlay 23eb374` — db.compose.yml: pin mariadb:10.6 (cp -a parity)
- `victor/bookva-overlay 264373d` — .env.example: design v3 hostnames
- `victor/bookva-overlay 5b173de` — config-templates align to prod shape + design v3 hostname
- `victor/books 75ea320` — feat(deploy): web.compose.yml embed-api env switch
- `victor/books 2f7b539` — fix(ci): rename secrets.GITEA_TOKEN → BOOKVA_OVERLAY_TOKEN
- `.admin × 5` — task progress, closure, NEXT_SESSION refreshes
## What's LIVE сейчас
- **bookseller.kzntsv.site** → bookva-web (embed-api), 200 OK, login-gate active (id=1=pobeda2003, id=2=vitya)
- **bookva.kzntsv.site** → books-web (slovo, embed-api тоже), 200 OK, fallback к books-api stack для legacy paths
- **books.kzntsv.site** → books-api (legacy stack), ещё running 24-48h soak до shutdown micro-task
- **10 bookva Portainer stacks** all ACTIVE (db/mongo/es/minio/api/web/scheduler/task-runner/ops-mcp/ntfy). bookva-ozon-mcp пока не создан (image отсутствует в registry).
- **External admin endpoints:**
- `mysql -h 89.253.255.133 -P 33306 -uroot -p${BOOKS_DB_ROOT_PASSWORD} books`
- S3 client → `http://89.253.255.133:9001`, AKIA same as books (см. pass `books-vds/full-env`)
- **Auto-deploy симметричный** — push в victor/books master → build → deploy.yml tenant=all → PUT slovo (22/23/24/26) + bookva (47/45/46/43)
## Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
| `books-ops-mcp-host-promote` ⚪ (NEW) | promote ops-mcp+docker-proxy в host-level stack, drop bookva-ops-mcp idle-stub. Ideology: books VDS = host, slovo/bookva = tenant-стэки. 10-step playbook + 5 design Qs. | `.tasks/books-ops-mcp-host-promote.md` |
| `books-api-shutdown` (NEW micro-task) | 24-48h soak ends ~2026-05-27/28. `docker stop books-api` через Portainer | TBD `.tasks/books-api-shutdown.md` |
| `bookva-ozon-mcp-image-build` (NEW micro-task) | image `books-ozon-mcp:master` не в registry — нужен build pipeline в victor/books | TBD `.tasks/bookva-ozon-mcp-image-build.md` |
| `bookva-tenant-cutover` task **не понадобилась** — cutover de-facto произошёл в этой сессии (Step 6 descoped по решению user'а) | n/a — manual heads-up учредителю Bookva |
| `bookva-minio-https-dns` (optional) | reg.ru A `bookva-minio.kzntsv.site` → 89.253.255.133 + `push.bookseller.kzntsv.site` → 89.253.255.133 для traefik HTTPS вместо port-bind | reg.ru DNS UI |
| `mariadb-mongo-upgrade-chain` (eventual post-cutover) | bookva-db 10.6 → 10.11, bookva-mongo 4.2 → 4.4 → 5 → 6 → 7 chain. Когда usage стабилизируется | TBD |
| `stateful-split-volume-copy` ⚪ | bookva-side done; slovo-side scope deferred (отдельный slovo-cutover) | `.tasks/stateful-split-volume-copy.md` |
| `infra-inventory` ⚪ | books VDS теперь 14 stacks (+ bookva-minio + 9 bookva) — момент удачный для ingest factsheet | `.tasks/infra-inventory.md` |
| `books-bookva-user-whitelist-gathering` ⚪ | login-gate уже applied (id=1+2 only) — таска осталась только для verification списка от учредителя Bookva post-cutover | `.tasks/books-bookva-user-whitelist-gathering.md` |
| `books-vds-bookva-bootstrap` 🔵 | blocked on Phase 4 (Rusonyx или другой VDS для Bookva billing). Long-term — bookva сейчас на shared books VDS | `.tasks/books-vds-bookva-bootstrap.md` |
| `books-dns-cutover-bookva` 🔵 | blocked on books-vds-bookva-bootstrap | `.tasks/books-dns-cutover-bookva.md` |
## Спроси user'а
- **`books-ops-mcp-host-promote`** — приоритет («ближайшее время» сказано). Когда начинать? Сначала read books/packages/ops-mcp/server.js чтобы разрешить design Q3 (MARIADB_PASSWORD scope — один tenant DB или обе).
- **Manual heads-up учредителю Bookva** (Step 6 substitute) — отправить ей сообщение «Bookva теперь на `https://bookseller.kzntsv.site`, login те же». Когда?
- **`books-api-shutdown`** через 24-48ч — ad-hoc через Portainer или tracker task?
- **`bookva-ozon-mcp-image-build`** — нужен build в victor/books CI? Сейчас image отсутствует, bookva-ozon-mcp stack не создан. Если service не используется — skip навсегда?
- **bookva-minio creds rotation** — сейчас AKIA same as books-minio. Rotate в отдельную task'у когда стабилизируется?
- **slovo-overlay parity audit** — `.env.example` и templates вероятно stale similarly to bookva pre-fix. Audit перед slovo-cutover task?
## Не делать (preemptive guards)
- **Не stop bookva-{db,mongo,es,minio,api,web,scheduler,task-runner,ops-mcp,ntfy}** — все LIVE на bookseller.kzntsv.site, любой stop = production outage Bookva tenant'а.
- **Не editing config volumes через alpine** — source of truth = `bookva-overlay/config-templates/`. Edit → commit → push → re-populate.
- **Не stop books-api** до явного soak end (~2026-05-27/28) + user sign-off. Внешние callers всё ещё на `https://books.kzntsv.site/*`.
- **Не push без grant в next session** — auto-push grant был session-only per Rule 4. В этой сессии user grant'нул на «делай авто-push» — следующая session требует нового grant.
- **Не trust DNS wildcard kzntsv.site** — wildcard → 94.19.247.14 (Windows IIS), НЕ books VDS 89.253.255.133. Новые subdomains требуют explicit A-records в reg.ru.
- **Не restore /backups/books-{db,mongo}-pre-split-20260526-*.tar.gz** unless rollback. Manual cleanup после 7+ дней.
## Memory updates / wiki ingests
Ingested в shared wiki `~/projects/.wiki/concepts/`:
- `gitea-reserved-secret-prefix` — GITEA_* / GITHUB_* prefix reserved (PUT → 400)
- `mongo-wt-format-major-version-incompat` — Mongo 4→7 crash exit 62, chain upgrade FCV
- `portainer-per-stack-depends-on-pitfall` — cross-stack depends_on "undefined service"
Local memory updates за сессию (не ingested, books-specific):
- DNS wildcard kzntsv.site → 94.19.247.14 (Windows IIS, не books-vds)
- bookva passwords plaintext в DB (varchar(45), TODO bcrypt в login.post.js)
- books-vds traefik instance naming: `entrypoints=https` + `certresolver=letsEncrypt` (case-sensitive)
- Embed-api auth gate в books-web identical к books-api (401 без token, 401 invalid JWT)
- Multi-tenant MinIO design: separate container vs bucket-split. User выбрал separate container (zero-config-change в apps).
## Pass / Reference
- pass entry `gitea/victor-books-ci-bookva-overlay` (PAT scope=read:repository) — backup для BOOKVA_OVERLAY_TOKEN secret в victor/books.
- pass entry `books-vds/full-env` — BOOKS_PORTAINER_URL+API_KEY, BOOKS_DB_ROOT_PASSWORD, MINIO_ACCESS_KEY.
- Backups на books VDS — `/backups/books-{db,mongo}-pre-split-20260526-*.tar.gz`.
- **Reference:** [[bookva-tenant-cutover-prep]] § Closure note + Post-closure follow-up — full session trace.