Files
admin/.tasks/NEXT_SESSION.md

102 lines
12 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-07-30T14:30:00Z
session_id: 2026-07-30-labtools-v3-cutover
prev_session_id: 2026-07-30-kupimknigi-v3-cutover
---
# Next session handoff
## Предыдущая сессия — kupimknigi.spb.ru v3 cutover. ЗАВЕРШЁН ✅
## Эта сессия — labtools.ru v3 cutover. ЗАВЕРШЁН ✅
Третий сайт тиража (после on-snolla + kupimknigi). Тот же паттерн, отработан чисто. 3/6 GREEN.
### Что сделано
- **Bump:** `@snollajs/snolla 0.42.1→0.43.2` в `apps/web/package.json` + resolutions-блок в root `package.json` (commit `0dc0b4e`, pushed victor/labtools.ru master). yarn install: single `@smithy/signature-v4@5.3.11` (deduped). Endpoint fix `4f3314f` (s3.endpoint→minio.vds.kzntsv.site) был в master с 2026-07-29, но в бегущем образе `566d41c` (v2) его не было — v3 cutover заодно перевёл S3-direct read на vds minio.
- **Build на VDS:** `git archive 0dc0b4e``~/build/labtools``docker build -f deploy/Dockerfile --build-arg VERDACCIO_TOKEN``registry.kzntsv.site/labtools:0dc0b4e` (+latest), EXIT=0.
- **Staging :5080 parity-gate GREEN:** throwaway контейнер из env живого стека 17 (8 секретов). `/` byte-identical с real Host (18594B), theme asset `lato.css` 200 9239B byte-identical (v3 aws-sdk v3 S3-direct read из vds MinIO 2025), robots 200/200, sitemap = index 38 page-locs == live (identical set, 0 diff), self-consistency 0 bad (все 200/3xx), catalog section `/products/accessories` byte-identical (order-parity ✅).
- **Portainer PUT stack 17 LIVE:** node in-memory `put-stack` (НЕ PS), env 8/8 preserved, `mem_limit 512m` уже в compose, `prune:false pullImage:true`. PUT 200. Контейнер `0dc0b4e` healthy сразу. Source-of-truth compose синхронно закоммичен (admin).
- **Live smoke GREEN:** `/` 200, www 200, robots/sitemap 200, menu pages (about/clients/contacts/cookie/privacy) 200, `/products/press-forms`+`/products/accessories`+`/products/laboratory-ball-mills` 200, theme `lato.css` 200 9239B (v3 S3-direct). TLS CN=labtools.ru не тронут (LE до Sep 30). `/products` (bare)+`/products/presses`→404 = ожидаемо (не в sitemap; real section = `/products/press-forms`). **Rollback = `566d41c`** (v2 0.42.1, жив в registry).
## Предыдущая сессия — kupimknigi.spb.ru v3 cutover. ЗАВЕРШЁН ✅
Второй сайт тиража (после on-snolla пилота). Тот же паттерн, отработан чисто.
### Что сделано
- **Bump:** `@snollajs/snolla 0.42.0→0.43.2` в `apps/web/package.json` + resolutions-блок в root `package.json` (commit `5364353`, pushed victor/kupimknigi.spb.ru master). yarn install: single `@smithy/signature-v4@5.3.11` (deduped).
- **Build на VDS:** `git archive` (gitea-SSH нет) → `~/build/kupimknigi``docker build -f deploy/Dockerfile --build-arg VERDACCIO_TOKEN``registry.kzntsv.site/kupimknigi:5364353` (+latest), EXIT=0.
- **Staging :5079 parity-gate GREEN:** throwaway контейнер из env живого стека 21. `/` byte-identical с real Host (`Host: kupimknigi.spb.ru`), theme asset `toolbox.css` 200 35799 B byte-identical (v3 aws-sdk v3 S3-direct read из vds MinIO 2025), robots 200, `/callback-order/`→301. 3-байт diff без Host = form hidden `url`=request-URL (benign request-context).
- **Portainer PUT stack 21 LIVE:** node in-memory `put-stack` (НЕ PS — кириллица compose), JWT re-auth перед PUT, env-preserving 8/8, `prune:false pullImage:true mem_limit 512m`. PUT 200. Source-of-truth compose синхронно закоммичен (admin `6f6fab1d`).
- **Live smoke GREEN:** `/` 200 17708 B, H1 «Скупка книг на дому в СПб…», robots/sitemap 200, `/callback-order/`→301, theme asset 200 35799 B. Контейнер `5364353` healthy. TLS LE до Oct 3 (не тронут). **Rollback = `9608ff6`** (v2, жив в registry).
- **Bundles a83e2a9 endpoint fix** (minio.kzntsv.site→minio.vds.kzntsv.site) — был в репо с 2026-07-29, но в бегущем образе 9608ff6 его не было; v3 cutover заодно перевёл S3-direct read на vds minio.
User разворот 2026-07-30: v3 (aws-sdk v2→v3) — **конечная цель**, v2-пилот был промежуточным
доказательством. on.snolla.com = v3-пилот. Скоординировано с snolla-сессией (peer, inter-session):
snolla опубликовала v3, admin зарезал боевой cutover.
### Что сделано
- **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`.
### Коммуникационный косяк сессии (честно)
Прошлая сессия зарепортила 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)
- `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 |
|---|---|---|
| **B3 v3 — labtools.ru** | ✅ LIVE 2026-07-30 | эта сессия — см. ↑ §Эта сессия |
| **B3 v3 — kupimknigi** | ✅ LIVE 2026-07-30 | prev session |
| **B3 v3 — on.snolla.com** | ✅ LIVE 2026-07-30 | prev session |
| **B3 v3 — остальные 3 сайта** (labtools.pro/emspb/tandemmebel) | ⏳ TODO — v3-паттерн отработан на 3 сайтах (3 GREEN) | `.wiki/concepts/minio-split-cutover-runbook.md` §B3-v3 + per-site `-vds-deploy-runbook.md` |
| 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'а
- **Следующий сайт = labtools.pro** (user выбрал 2026-07-30, конец этой сессии — НЕ начат, работа в следующей сессии). Стек 19, возможно общий кодбейс с labtools.ru — проверить, можно парой. 3/6 GREEN (on-snolla, kupimknigi, labtools.ru). Остались после: **emspb** (стек 18), **tandemmebel** (стек 20 — был BLOCKED на sharp-staging визуальном дефекте, проверить перед бампом). Паттерн отработан x3: bump `@snollajs/snolla→0.43.2` + resolutions → build на VDS → staging :50XX parity-gate → Portainer PUT env-preserving.
- stostayer v3-трек (0.43.1/0.7.8/0.17.2) — HOLD, snolla-scope, НЕ подхватывать без GO user (snolla ждёт stostayer-specific).
## Не делать (preemptive guards)
- **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 за сессию
- 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.)