4-й сайт тиража v3 (on-snolla, kupimknigi, labtools.ru, labtools.pro — 4/6 GREEN). Stack 19 image 0610432→a106622, env 8/8 preserved, mem_limit 512m. Staging :5081 parity-gate GREEN: theme lato.css 200 9994B md5-identical (v3 aws-sdk v3 S3-direct read из vds MinIO 2025), sitemap 7 детей == live, order-parity press-forms 12 изделий, / 4-байт diff = og:url/og:image request-host (benign). Live smoke GREEN, TLS CN=labtools.pro не тронут. Rollback = labtools-pro:0610432 (0.42.1, жив в registry). Compose source-of-truth + runbook v3 секция + handoff обновлены. Co-Authored-By: Claude <noreply@anthropic.com>
15 KiB
_last_updated_, session_id, prev_session_id
| _last_updated_ | session_id | prev_session_id |
|---|---|---|
| 2026-07-30T17:35:00Z | 2026-07-30-labtools-pro-v3-cutover | 2026-07-30-labtools-v3-cutover |
Next session handoff
Эта сессия — labtools.pro v3 cutover. ЗАВЕРШЁН ✅
4-й сайт тиража v3 (после on-snolla, kupimknigi, labtools.ru). Тот же паттерн, отработан чисто. 4/6 GREEN. labtools.pro = English-twin (Culture=en) labtools.ru, отдельный репо victor/labtools.pro, image name labtools-pro (НЕ labtools), стек 19.
Что сделано
- Bump:
@snollajs/snolla 0.42.1→0.43.2вapps/web/package.json(commit12f8992) + resolutions-блок в rootpackage.json(verbatim labtools.ru) + регенyarn.lock(commita106622, single@smithy/signature-v4@5.3.11deduped). Pushed victor/labtools.pro master6c7ea88..a106622. Endpoint fix6c7ea88(s3.endpoint→minio.vds.kzntsv.site) был в master с 2026-07-29, но в бегущем образе0610432(v2) его не было — v3 cutover заодно перевёл S3-direct read на vds minio. - Build на VDS:
git archive a106622→~/build/labtools-pro→docker build -f deploy/Dockerfile --build-arg VERDACCIO_TOKEN→registry.kzntsv.site/labtools-pro:a106622(+latest), digest2152642c4b17, 476MB, EXIT=0. - Staging :5081 parity-gate GREEN: throwaway контейнер из env живого стека 19 (8 секретов).
/+nav+catalog = 4-байт diff =og:url/og:imagerequest-host (localhost:5081vswww.labtools.pro, benign → byte-identical post-cutover). Redirects IDENT, robots/sitemap IDENT (7 детей == live), themelato.css200 9994B md5-identical (v3 aws-sdk v3 S3-direct read из vds MinIO 2025), order-parity press-forms 12 изделий identical. Всё 200/3xx. - Portainer PUT stack 19 LIVE: node in-memory
put-stack(НЕ PS), env 8/8 preserved,prune:false pullImage:true mem_limit 512m. PUT 200. Контейнерa106622healthy сразу. Source-of-truth compose синхронно закоммичен (admin0610432→a106622). - Live smoke GREEN:
/200 12736B,/about+/contacts200, robots/sitemap 200 (7 детей 200), 3 каталог-секции 200, продукты 200, themelato.css200 9994B (v3 S3-direct), redirects parity, apexlabtools.pro200. TLS CN=labtools.pro не тронут (LE до Sep 30)./clients+/cookie+/privacy→404 = ожидаемо (не в sitemap .pro; real nav =/ /about /contacts). Rollback =0610432(v2 0.42.1, жив в registry).
Предыдущая сессия — labtools.ru v3 cutover. ЗАВЕРШЁН ✅
Третий сайт тиража (после on-snolla + kupimknigi). Тот же паттерн, отработан чисто. 3/6 GREEN.
Что сделано
- Bump:
@snollajs/snolla 0.42.1→0.43.2вapps/web/package.json+ resolutions-блок в rootpackage.json(commit0dc0b4e, pushed victor/labtools.ru master). yarn install: single@smithy/signature-v4@5.3.11(deduped). Endpoint fix4f3314f(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 assetlato.css200 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/accessoriesbyte-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. Контейнер0dc0b4ehealthy сразу. 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-mills200, themelato.css200 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-блок в rootpackage.json(commit5364353, 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 assettoolbox.css200 35799 B byte-identical (v3 aws-sdk v3 S3-direct read из vds MinIO 2025), robots 200,/callback-order/→301. 3-байт diff без Host = form hiddenurl=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 синхронно закоммичен (admin6f6fab1d). - Live smoke GREEN:
/200 17708 B, H1 «Скупка книг на дому в СПб…», robots/sitemap 200,/callback-order/→301, theme asset 200 35799 B. Контейнер5364353healthy. 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.0core 0.26.4(peerDep@snollajs/datawiden<0.15.0→<0.16.0— баг-фикс капа из21c73aa)@snollajs/snolla 0.43.2(@smithy pin +@aws-sdk/client-s3 3.1005.0exact baked в deps). Snolla commita8b198d. Тесты 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) в rootpackage.json(optional determinism — verify доказал что и без них работает, pin для version-stability). Commiteb8c143(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-memoryput-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)
f56eb2f8feat(on-snolla): v3 cutover LIVE — snolla 0.43.2 (aws-sdk v2→v3) + runbook migrationafb6e5f0meta(handoff): fix stale tandemmebel "blocked" — LIVE since 2026-07-12
Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
| B3 v3 — labtools.pro | ✅ LIVE 2026-07-30 | эта сессия — см. ↑ §Эта сессия |
| B3 v3 — labtools.ru | ✅ LIVE 2026-07-30 | prev session |
| B3 v3 — kupimknigi | ✅ LIVE 2026-07-30 | prev session |
| B3 v3 — on.snolla.com | ✅ LIVE 2026-07-30 | prev session |
| B3 v3 — остальные 2 сайта (emspb/tandemmebel) | ⏳ TODO — v3-паттерн отработан x4 (4 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'а
- Следующий сайт тиража v3 — 4/6 GREEN (on-snolla, kupimknigi, labtools.ru, labtools.pro). Остались: emspb (стек 18), tandemmebel (стек 20 — был BLOCKED на sharp-staging визуальном дефекте, проверить перед бампом). Паттерн отработан x4: bump
@snollajs/snolla→0.43.2+ resolutions + регенyarn.lock(иначе Dockerfileyarn install --immutableпадает) → build на VDS → staging :50XX parity-gate → Portainer PUT (node in-memoryput-stack, env-preserving). NB: yarn.lock реген — обязателен, на labtools.pro сначала забыл (сборка упала YN0028). - 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.)