Files
admin/.tasks/NEXT_SESSION.md
vitya 18c27ab8f5 meta(handoff): MinIO-split B4 fully closed — gallery preview fixed (MoreThenCms 09cb072d)
B4 endpoint flip + pre-existing S3-provider KeyNotFoundException bug (gallery preview
ownerId) fixed via drop-in DLL. Preview confirmed live by user. Runbook §B4 + NEXT_SESSION
updated with root cause + fix reference.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-30 19:49:59 +03:00

8.2 KiB
Raw Blame History

_last_updated_, session_id, prev_session_id
_last_updated_ session_id prev_session_id
2026-07-30T16:05:00Z 2026-07-30-tandemmebel-v3-cutover 2026-07-30-emspb-v3-cutover

Next session handoff

Эта сессия — tandemmebel.ru v3 cutover. ЗАВЕРШЁН — ТИРАЖ v3 ЗАКОНЧЕН (6/6 GREEN)

6-й и последний сайт тиража v3 (после on-snolla, kupimknigi, labtools.ru, labtools.pro, emspb). Тот же паттерн, отработан чисто. 6/6 v3 сайтов GREEN. tandemmebel = стек 20, in-place bump (DNS на VDS с 2026-07-12).

NB: handoff от prev-сессий флагал tandemmebel «BLOCKED на sharp-staging визуальном дефекте» — STALE. tandemmebel LIVE на VDS с 2026-07-12 (commit afb6e5f0 это фиксил в борде, memory тоже). User подтвердил в этой сессии: «да с чего ты взял что блокер, сайт уже давно на бою». Бамп прошёл чисто, без блокера.

Что сделано

  • Bump: @snollajs/snolla 0.42.1→0.43.2 в apps/web/package.json (commit 9d51c09) + resolutions-блок в root package.json (verbatim labtools.ru: @aws-sdk/client-s3 3.1005.0 + @smithy chain 5.3.11 — optional determinism) + реген yarn.lock (single @smithy/signature-v4@5.3.11 deduped, no dual-instance). Pushed victor/tandemmebel.ru master f4ddce6..9d51c09. Endpoint fix f4ddce6 (s3.endpoint→minio.vds.kzntsv.site) был в master с 2026-07-29, но в бегущем образе 8df10ee (v2) его не было — v3 cutover заодно перевёл S3-direct read на vds minio.
  • Build на VDS: git archive 9d51c09~/build/tandemmebeldocker build -f deploy/Dockerfile --build-arg VERDACCIO_TOKENregistry.kzntsv.site/tandemmebel:9d51c09(+latest), digest sha256:d14982c24dc7c61a334c8973e6f1c48147c7d3cbcc772b28af6c629431947b16, 476MB (v2 8df10ee был 583MB — v3 leaner), EXIT=0. yarn install --immutable в Docker прошёл (yarn.lock matches).
  • Staging :5020 parity-gate GREEN: throwaway контейнер из env живого стека 20 (8 секретов, --network proxy). robots md5 a01e4c60… identical (87B); sitemap index→5 sub-sitemaps → 184 locs == live 184 IDENTICAL (0 prod-only / 0 new-only); self-consistency 183×200 + 1×404 (/articles — prod=404 parity benign, не регрессия); / +557B = og:url/og:image request-host context (benign, byte-identical post-cutover); theme Gotham-Pro.css 200 4436B (v3 aws-sdk v3 S3-direct read из vds MinIO 2025).
    • Скрипт-баг поймал и исправил: $"\n" в bash = literal backslash-n, не newline → locs загрязнялись trailing \n → фейковые 404/301. Переписал gate на while read -r + temp-файлы (gate2.sh). Урок: всегда verify locs чистые перед status-чексом.
  • Portainer PUT stack 20 LIVE: node in-memory put-stack (НЕ PS — кириллица compose; Node 22 global fetch, GET /stacks/20 для Env + /stacks/20/file для StackFileContent), env 8/8 preserved, prune:false pullImage:true mem_limit 512m. PUT 200. Контейнер 9d51c09 healthy ~9s.
  • Live smoke GREEN: / 200 45742B, /projects 200 90758B, /sitemap.xml 200 (184 locs == parity), robots md5 a01e4c60…, /articles 404 parity, theme Gotham-Pro.css 200 4436B (v3 S3-direct). TLS CN=tandemmebel.ru, expire Oct 10 2026 (не тронут — in-place swap). Лог чист. Rollback = 8df10ee (v2 0.42.1, жив в registry).
  • Compose (admin source-of-truth) синхронно закоммичен 8df10ee9d51c09. tandemmebel-vds-deploy-runbook §0.43.2 + minio-split-cutover-runbook progress-table обновлены (6/6 GREEN).

v3 тираж — ФИНАЛЬНЫЙ статус (6/6 GREEN)

Сайт Стек Image Commit Snolla
on.snolla.com 22 eb8c143 eb8c143 0.43.2
kupimknigi.spb.ru 21 5364353 5364353 0.42.0→0.43.2
labtools.ru 17 0dc0b4e 0dc0b4e 0.43.2
labtools.pro 19 a106622 a106622 0.43.2
emspb.ru 18 5afd8a1 5afd8a1 0.43.2
tandemmebel.ru 20 9d51c09 9d51c09 0.43.2

Все 6 на vds MinIO 2025 (aws-sdk v3 S3-direct), все parity-gate GREEN, все TLS не тронуты. Rollback-теги v2 (0.42.1) живы в registry для каждого.

Recent commits (этот репо, .admin)

  • 69d3d0dd feat(tandemmebel): v3 cutover LIVE — snolla 0.42.1→0.43.2 (aws-sdk v2→v3)
  • fd48df62 feat(emspb): v3 cutover LIVE — snolla 0.42.1→0.43.2 (aws-sdk v2→v3)
  • c3c79b99 feat(labtools.pro): v3 cutover LIVE

Open треки

Трек Готовность Entry-point
B3 v3 тираж ЗАВЕРШЁН 6/6 GREEN все 6 runbook'ов §0.43.2
MinIO split Track A (books-vds minio 2020→2025) TODO — transparent, отдельно runbook §Track A
MinIO split B4 .NET catch-all админ s3 endpoint DONE 2026-07-30 — Web.config 6/6 endpoint flipped, creds verified, IIS recycled, login 200. Превью confirmed user'ом: оказался pre-existing баг S3-провайдера (KeyNotFoundException на ownerId в GalleriesStorage ctor) — фикс 09cb072d в MoreThenCms (drop-in DLL), 21/21 tests, live-verified runbook §B4
MinIO split B5 Obsidian Remotely Save endpoint DONE 2026-07-30 — endpoint flipped в vault (verified) 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 тираж завершён (6/6 GREEN). Что дальше? Открытые MinIO-split треки: Track A (books-vds minio 2020→2025 migration — transparent). B4 (.NET catch-all админ s3 endpoint) закрыт этой сессией (login 200; Asset Manager preview — confirm в админке). B5 (Obsidian Remotely Save) закрыт. ИЛИ stostayer v3-трек (HOLD, snolla-scope — ждёт stostayer-specific, НЕ подхватывать без GO user).
  • B4 закрыт. Track A — последний transparent фоновый шаг, закрывает распад books-vds minio.

Не делать (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-необходимость.
  • НЕ пушить образы в docker.stostayer.ru:443 (VPN-бан). Registry = registry.kzntsv.site (vds), build на VDS — ок.
  • Portainer PUT: node in-memory, НЕ PS Invoke-RestMethod (корраптит кириллицу compose). StackFileContent брать с /stacks/{id}/file, не /stacks/{id}.
  • bash $"\n" ≠ newline — это locale-translation, даёт literal \n. Для newline в bash: $'\n' или while read -r. Иначе locs загрязняются → фейковые status-коды в parity-gate.
  • VDS gitea-SSH нет — сборка на VDS через git archive (локально) → scp → extract, не git clone на VDS.
  • VDS SSH: ssh -i ~/.ssh/id_ed25519 vitya@89.253.255.94 (креды pass show vds-kzntsv/full-env, PORTAINER_API_KEY там же).
  • Дисциплина: runbook'и → .wiki/concepts/<slug>-runbook.md, не scripts/. Креды → pass, не plaintext в git.

Memory updates за сессию

  • UPDATE aws-sdk-v2-minio-2025-works-no-smithy-pin.md — «remaining 5 CMS sites» теперь STALE: все 6 v3 сайтов GREEN на 0.43.2, тираж завершён 2026-07-30. Строка про «config-endpoint bump only» устарела.
  • (handoff §v3 тираж — не memory.)