meta(handoff): NEXT_SESSION — on-snolla v3 cutover LIVE (end-goal), 5 sites v3 TODO
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,62 +1,76 @@
|
||||
---
|
||||
_last_updated_: 2026-07-30T10:25:00Z
|
||||
session_id: 2026-07-30-minio-split-on-snolla-pilot
|
||||
prev_session_id: 2026-07-24-stostayer-markdown-render-fix
|
||||
_last_updated_: 2026-07-30T11:34:14Z
|
||||
session_id: 2026-07-30-on-snolla-v3-cutover
|
||||
prev_session_id: 2026-07-30-minio-split-on-snolla-pilot
|
||||
---
|
||||
|
||||
# Next session handoff
|
||||
|
||||
## Эта сессия — MinIO split, Track B3 пилот on-snolla S3-direct-path. ЗАВЕРШЁН ✅
|
||||
## Эта сессия — on.snolla.com v3 cutover (конечная цель). ЗАВЕРШЁН ✅
|
||||
|
||||
Пилот on-snolla: in-place image bump боевого стека 22 под MinIO split (CMS-медиа → vds minio).
|
||||
Подтвердил главный риск runbook'а — aws-sdk v2 vs MinIO 2025 — **работает без @smithy pin**.
|
||||
User разворот 2026-07-30: v3 (aws-sdk v2→v3) — **конечная цель**, v2-пилот был промежуточным
|
||||
доказательством. on.snolla.com = v3-пилот. Скоординировано с snolla-сессией (peer, inter-session):
|
||||
snolla опубликовала v3, admin зарезал боевой cutover.
|
||||
|
||||
### Что сделано
|
||||
- **Build на VDS** образа `registry.kzntsv.site/on-snolla:07db7e3` (digest 9d757d97) из `victor/on.snolla.com@07db7e3`
|
||||
(config endpoint `minio.kzntsv.site → minio.vds.kzntsv.site`, snolla 0.42.1 v2, **без бампа package.json** —
|
||||
user-решение: сплит без snolla version bump). Push в registry OK (build-warning VERDACCIO_TOKEN в ARG — известный follow-up, не блокер).
|
||||
- **Throwaway-staging :5077** из env живого контейнера (8 секретов). robots/home/sitemap 200.
|
||||
- **S3-direct gate (главный):** theme asset `/themes/c406…/bootstrap.min.css` на staging → **200, 97324 B == live-public**
|
||||
(aws-sdk v2 → vds minio 2025 — compat подтверждена, нет SignatureDoesNotMatch/403).
|
||||
- **Sitemap parity** staging==live 3/3 IDENTICAL (`/`, `/c`, `/yandex_…`); `/c`→404 parity с продом.
|
||||
- **Portainer PUT стека 22** env-preserving (8/8), `prune:false, pullImage:true` → 200. Node-скрипт in-memory
|
||||
(GET+PUT, без temp-файлов — curl `/tmp/` vs node `/tmp/` расходятся на Windows). Container 07db7e3 healthy, mem_limit 512m preserved.
|
||||
- **Live-smoke** `https://on.snolla.com`: theme asset 200 97324 B, `/`,`/robots`,`/sitemap`,`/yandex` 200, `/c` 404 parity.
|
||||
TLS cert не тронут (LE YR1, CN=on.snolla.com, до Oct 18). Логи: `Server Listening`, aws-sdk v2 EOL warning (ожидаемо), нет крашей.
|
||||
- **Закрытие:** compose source-of-truth `host-stacks/vds-kzntsv/on-snolla.compose.yml` обновлён (тег 07db7e3 + endpoint + rollback-коммент);
|
||||
`.wiki/concepts/minio-split-cutover-runbook.md` (перенесён из scripts/) — Track B progress-таблица; commit `443713e8`.
|
||||
- **Memory:** NEW `aws-sdk-v2-minio-2025-works-no-smithy-pin.md` — @smithy SigV4 regression = v3-only, v2 идёт без пина.
|
||||
- **Snolla v3 опубликована** (verdaccio latest, 2026-07-30): `@snollajs/liquid 0.11.0` + `data 0.15.0`
|
||||
+ `core 0.26.4` (peerDep `@snollajs/data` widen `<0.15.0`→`<0.16.0` — баг-фикс капа из `21c73aa`)
|
||||
+ `@snollajs/snolla 0.43.2` (@smithy pin + `@aws-sdk/client-s3 3.1005.0` exact baked в deps).
|
||||
Snolla commit `a8b198d`. Тесты core 259/259, snolla 120/120.
|
||||
- **Live MinIO verify ЗЕЛЁНЫЙ** (snolla, оба конфига vs `minio.vds.kzntsv.site`): Run A (resolutions,
|
||||
@smithy/signature-v4 5.3.11) + Run B (БЕЗ resolutions, 5.6.12) — оба LIST/READ-PARITY/PUT/GET/MULTIPART OK.
|
||||
**Переворот:** regression-гипотеза v3 SigV4 vs MinIO НЕ воспроизвелась end-to-end — 5.6.12 работает
|
||||
против vds MinIO 2025. «CONFIRMED» framing (slipstream без live-теста) откатан.
|
||||
- **on.snolla.com v3 cutover LIVE 2026-07-30T11:28Z**: bump `@snollajs/snolla 0.42.1→0.43.2` в
|
||||
`apps/web/package.json` + `resolutions` (@aws-sdk/client-s3 3.1005.0 + @smithy chain 5.3.11) в root
|
||||
`package.json` (optional determinism — verify доказал что и без них работает, pin для version-stability).
|
||||
Commit `eb8c143` (pushed on.snolla.com origin/master). Build на VDS (archive → `~/build/on-snolla` →
|
||||
`docker build -f deploy/Dockerfile --build-arg VERDACCIO_TOKEN`) → `registry.kzntsv.site/on-snolla:eb8c143`
|
||||
(+latest). Throwaway staging :5078 из env live-контейнера → parity-gate GREEN (theme asset 200 97324 B
|
||||
byte-identical, sitemapindex+3 sub-sitemaps byte-identical, /c 404 parity). Portainer PUT stack 22
|
||||
env-preserving (8/8, node in-memory `put-stack`), `prune:false, pullImage:true`, `mem_limit 512m`.
|
||||
Live smoke GREEN: `/` 200, robots/sitemap/sub-sitemaps 200, /yandex 200, theme asset 200 97324 B
|
||||
(v3 aws-sdk v3 S3-direct read из vds MinIO 2025). TLS не тронут (LE до Oct 18). **Rollback = `07db7e3`** (v2, жив).
|
||||
- **Дисциплина-фикс:** runbook перенесён `scripts/minio-split-cutover/runbook.md` → `.wiki/concepts/minio-split-cutover-runbook.md`
|
||||
(конвенция: runbook'и в `.wiki/concepts/`, не `scripts/`). Креды в bash-примерах нормализованы → `pass show minio-vds/full-env`
|
||||
(wiki-конвенция «креды в pass, не в git»). +index.md, +log.md, +v3-секция в `on-snolla-vds-deploy-runbook.md`.
|
||||
|
||||
### План отката
|
||||
PUT стека 22 назад на тег `473923e494db` (rollback-тег в registry, pred endpoint `minio.kzntsv.site`/books-vds, миррор там жив).
|
||||
RUVDS DECOMM 2026-07-21 — rollback только образ-тегом.
|
||||
### Коммуникационный косяк сессии (честно)
|
||||
Прошлая сессия зарепортила on-snolla v2-пилот как «ЗАВЕРШЁН ✅», утопив что v3 (конечная цель) — не начата
|
||||
(snolla ждёт, 0.43.x не опубликована). User rightfully взбесился («что за поебень, всё рапортовали готово»).
|
||||
Плюс v3 regression-гипотеза была зацементирована как «CONFIRMED» без end-to-end live-теста — snolla поймала
|
||||
это consumer-verify'ем. **Уроки:** (1) «готово» = цель на железе, не подцель зарезана; (2) verify end-to-end
|
||||
против живой цели, НЕ trust halted-bisect гипотезе / НЕ лепи «CONFIRMED» без live-теста. Записано в memory.
|
||||
|
||||
## Recent commits (этот репо, .admin)
|
||||
- `443713e8` feat(on-snolla): MinIO split S3-direct-path cutover — stack 22 bump 473923e494db->07db7e3
|
||||
- `71dee93e` @wiki: alias pilonuxt -> pilorama98.ru in prose
|
||||
- `5a93ac78` wiki(snolla): ingest local admin HTTPS binding
|
||||
- `f56eb2f8` feat(on-snolla): v3 cutover LIVE — snolla 0.43.2 (aws-sdk v2→v3) + runbook migration
|
||||
- `afb6e5f0` meta(handoff): fix stale tandemmebel "blocked" — LIVE since 2026-07-12
|
||||
|
||||
## Open треки
|
||||
| Трек | Готовность | Entry-point |
|
||||
|---|---|---|
|
||||
| **MinIO split B3 — остальные 5 сайтов** | ⏳ TODO — пилот on-snolla GREEN, паттерн отработан | `.wiki/concepts/minio-split-cutover-runbook.md` §B3 + progress-таблица |
|
||||
| MinIO split Track A (books-vds minio 2020→2025) | ⏳ TODO — transparent, отдельно | runbook.md §Track A |
|
||||
| MinIO split B4 .NET catch-all админ s3 endpoint | ⏳ TODO — `C:\sites\snolla\Web.config` serviceURL → minio.vds.kzntsv.site | runbook.md §B4 |
|
||||
| MinIO split B5 Obsidian Remotely Save endpoint | ⏳ TODO — obsidian бакет смиррорен (B1), можно менять endpoint | runbook.md §B5; memory `obsidian-remotely-save-endpoint-after-mirror` |
|
||||
| books-task-runner-registry-auth-cred | 🔵 blocked — cred в config-volume, но рабочий образ содержит СТАРЫЙ registryGc; тега master-a3734d5 в реестре нет | `.tasks/STATUS.md` §books-task-runner |
|
||||
| **B3 v3 — остальные 5 сайтов** (kupimknigi/labtools/labtools.pro/emspb/tandemmebel) | ⏳ TODO — v3-паттерн отработан на on-snolla (пилот GREEN) | `.wiki/concepts/minio-split-cutover-runbook.md` §B3-v3 + `on-snolla-vds-deploy-runbook.md` In-place bumps |
|
||||
| MinIO split Track A (books-vds minio 2020→2025) | ⏳ TODO — transparent, отдельно | runbook §Track A |
|
||||
| MinIO split B4 .NET catch-all админ s3 endpoint | ⏳ TODO — `C:\sites\snolla\Web.config` serviceURL → minio.vds.kzntsv.site | runbook §B4 |
|
||||
| MinIO split B5 Obsidian Remotely Save endpoint | ⏳ TODO — obsidian бакет смиррорен, можно менять | runbook §B5; memory `obsidian-remotely-save-endpoint-after-mirror` |
|
||||
| books-task-runner-registry-auth-cred | 🔵 blocked — cred в config-volume, рабочий образ содержит СТАРЫЙ registryGc; тега master-a3734d5 в реестре нет | `.tasks/STATUS.md` §books-task-runner |
|
||||
|
||||
## Спроси user'а
|
||||
- Какой следующий сайт из 5 бампить (kupimknigi/labtools/labtools.pro/emspb/tandemmebel)? Все 5 уже live на VDS — кандидаты на тот же config-endpoint bump.
|
||||
- snolla-евый v3-трек (0.43.1/0.7.8/0.17.2 для stostayer) — HOLD, отдельная история; НЕ подхватывать без GO user (snolla ждёт).
|
||||
- Какой следующий сайт из 5 бампить на v3? Паттерн: bump `@snollajs/snolla→0.43.2` + resolutions (optional) → build на VDS → staging :50XX parity-gate → Portainer PUT env-preserving. tandemmebel был BLOCKED (sharp-staging дефект) — проверить перед бампом.
|
||||
- stostayer v3-трек (0.43.1/0.7.8/0.17.2) — HOLD, snolla-scope, НЕ подхватывать без GO user (snolla ждёт stostayer-specific).
|
||||
|
||||
## Не делать (preemptive guards)
|
||||
- **НЕ бампить snolla-пакеты** на 6 CMS-сайтах — user решил сплит через config-endpoint только, сайты на 0.42.1 v2. snolla v3-трек — HOLD (stostayer-scope).
|
||||
- **НЕ пушить образы в `docker.stostayer.ru:443`** с нашего VPN-egress — бан-гочи (см. [[stostayer-push-ban-single-large-push]]). Registry = `registry.kzntsv.site` (vds), build на VDS — ок.
|
||||
- **НЕ лезть в прод-БД** stostayer (MSSQL/MariaDB) — vitya остановил. Диагностика через логи контейнера + исходники.
|
||||
- **Portainer PUT: НЕ через PS Invoke-RestMethod** (корраптит кириллицу в compose). Node-скрипт in-memory (GET+PUT), НЕ встраивать JSON-payload в double-quoted `bash -c`. API-key работает для stack PUT (200) — JWT не нужен (JWT только для stack CREATE).
|
||||
- **curl `/tmp/` vs node `/tmp/` расходятся на Windows** (MSYS vs Win-путь) — НЕ писать temp-файлы через curl `-o /tmp/` и читать из node. In-memory в одном node-скрипте.
|
||||
- **После stack GET** (возвращает env-values с секретами) — вычищать temp-файлы. In-memory скрипт = нет утечки.
|
||||
- **verify end-to-end против живой цели, НЕ trust halted-bisect гипотезе** — и НЕ лепи «CONFIRMED» без live-теста (косяк этой сессии, см. memory `aws-sdk-v3-smithy-sigv4-minio-regression`).
|
||||
- **resolutions OPTIONAL, НЕ mandatory** — live verify доказал: 5.6.12 работает vs vds MinIO 2025. Resolutions = determinism-hardening, не SigV4-необходимость. Не пугать framing «упадёт без resolutions».
|
||||
- **НЕ пушить образы в `docker.stostayer.ru:443`** (VPN-бан). Registry = `registry.kzntsv.site` (vds), build на VDS — ок.
|
||||
- **НЕ лезть в прод-БД** stostayer — user остановил. Диагностика через логи контейнера + исходники.
|
||||
- **Portainer PUT: node in-memory, НЕ PS Invoke-RestMethod** (корраптит кириллицу compose). API-key работает для PUT (200), JWT только для stack CREATE.
|
||||
- **curl `/tmp/` vs node `/tmp/` на Windows расходятся** — in-memory в одном node-скрипте, без temp-файлов.
|
||||
- **Дисциплина: runbook'и → `.wiki/concepts/<slug>-runbook.md`**, не `scripts/`. `scripts/` только для executable. Креды → `pass`, не plaintext в git.
|
||||
- **VDS gitea-SSH нет** (Permission denied publickey) — сборка на VDS через `git archive` (локально) → transfer → extract, не `git clone` на VDS.
|
||||
|
||||
## Memory updates за сессию
|
||||
- NEW `aws-sdk-v2-minio-2025-works-no-smithy-pin.md` — v2 vs MinIO 2025 работает без пина; @smithy regression v3-only; 5 сайтов = config-endpoint bump.
|
||||
- MEMORY.md index обновлён.
|
||||
- UPDATE `aws-sdk-v3-smithy-sigv4-minio-regression.md` — «CONFIRMED» секция исправлена: dual-instance реален, но 5.6.12 работает vs vds MinIO 2025 (live verify end-to-end); resolutions = optional determinism НЕ mandatory; v3 опубликована (snolla 0.43.2). Урок: не лепи CONFIRMED без live-теста.
|
||||
- UPDATE `aws-sdk-v2-minio-2025-works-no-smithy-pin.md` — путь runbook'а → `.wiki/concepts/`.
|
||||
- MEMORY.md index обновлён (v3 строка + corrected framing).
|
||||
- (runbook migration + per-site v3 секция — в `.wiki/`, не memory.)
|
||||
Reference in New Issue
Block a user