Stack 26 (books-ops-mcp) in-place PUT в host-level compose без container churn. Stack 43 (bookva-ops-mcp) deleted. 2 Gitea secrets revoked. New canonical: `host-stacks/books-vds/ops-mcp.compose.yml` (management-plane, manual Portainer updates как traefik/portainer). Design locks: location=.admin/host-stacks, deploy=manual Portainer, MariaDB scope=slovo's only (Option A), config path unchanged. Companion commits: `victor/books ae3ab14`, `victor/bookva-overlay 50f5bbb`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
94 lines
8.4 KiB
Markdown
94 lines
8.4 KiB
Markdown
---
|
||
_last_updated_: 2026-05-27T00:30:00+03:00
|
||
session_id: 2026-05-26-ops-mcp-host-promote-CLOSED
|
||
---
|
||
|
||
# Next session handoff
|
||
|
||
## Recent commits
|
||
|
||
- `victor/books ae3ab14` — feat(deploy): ops-mcp host-promote — drop tenant pipeline (deploy.yml + delete ops-mcp.compose.yml)
|
||
- `victor/bookva-overlay 50f5bbb` — chore(deploy): drop ops-mcp.compose.yml (host-promoted в .admin)
|
||
- `victor/bookva-overlay 437d024` — fix(deploy): bookva-ops-mcp idle-stub command (interim, теперь obsolete)
|
||
- `.admin × 2` — tasks `books-ops-mcp-host-promote` 🟢 closed + handoff refresh + new `host-stacks/books-vds/ops-mcp.compose.yml`
|
||
- `.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` 🟢 **closed** — see Recent commits below | n/a |
|
||
| `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'а
|
||
|
||
- **Multi-tenant DB observability через ops-mcp** (deferred design call) — нужно ли видеть bookva-db / bookva-mongo через MCP? Если да — extend lib (per-tenant pool array) ИЛИ drop DB tools оставив только docker.
|
||
- **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.
|