Commit Graph

218 Commits

Author SHA1 Message Date
816c0e027d chore(handoff): next-session note — vehicles-loader 0.4.1 verify pending + books-vds consolidation eval
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 18:46:56 +03:00
8230f89198 meta(tasks): update [vehicles-loader-redeploy-per-group-rate-diff] in OpeItcLoc03/admin 2026-07-13 14:19:54 +00:00
2e18002958 meta(tasks): update [vehicles-loader-redeploy-per-group-rate-diff] in OpeItcLoc03/admin 2026-07-13 14:14:00 +00:00
f3395b3a64 meta(tasks): create [vehicles-loader-redeploy-per-group-rate-diff] in OpeItcLoc03/admin 2026-07-13 14:08:17 +00:00
b5839bd02d feat(tandemmebel): in-place bump 0.42.0 → 0.42.1 LIVE (stack 20, order-tag fix)
Consumer bump by operator (blocker-pattern 2026-07-04 resolved without dev-source):
pin apps/web/package.json:12 + yarn install (lock 0.42.1/core 0.24.1/liquid 0.10.2/data 0.14.1)
+ commit 0cd9351 + push origin (ls-remote confirmed).

Build on VDS → registry.kzntsv.site/tandemmebel:0cd9351 (digest f29c187f).
Throwaway-staging :5020 from live env, healthy.
Completeness-gate С VDS: 184/184 parity (NEW==PROD), /articles 404 identical to
prod oracle → benign. 0.42.1 order-fix inert on blog-portfolio (no catalog).
Operator-gated PUT stack 20 (env 8/8 preserved, prune:false pullImage:true)
→ container 0cd9351+healthy ~8s. Live-smoke GREEN, TLS cert untouched.

Closes snolla 0.42.1 rollout — all 5 snolla sites now on VDS.
Rollback = tag ed96b18 (+ b02ca18) in registry.

- compose source-of-truth: tag + comment (0.42.1)
- board task: decisions log entry
- wiki: new tandemmebel-vds-deploy-runbook, bump recipe (4 sites), index, log
2026-07-12 13:26:28 +03:00
d3d0ff48ed feat(tandemmebel): cutover LIVE on VDS — last snolla site migrated
DNS reg.ru flipped, traefik Host-rule staging->prod, LE cert issued.
Live-smoke GREEN: all pages 200, sitemap 184 locs, sharp media OK.
Gotham-Pro.css latent prod bug fixed by cutover (0B->4436B).
Snolla 0.42.x tirazh now fully alive (5/5 stacks on VDS).
2026-07-12 12:48:20 +03:00
3adbe839f2 meta(handoff): mem_limit 512m тираж snolla + durable-конвенция; tandemmebel ждёт DNS
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 14:45:39 +03:00
3bc9992350 meta(handoff): тираж snolla 0.42.1 закрыт (3 live-редеплоя + вика); остался tandemmebel на DNS-отмашке
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 12:18:43 +03:00
0fd1c69515 fix(labtools.pro): press-forms счётчик 13→12 (прог-сверка против прод — прод-истина 12, мой ручной счёт задвоил тайл; парити не задет)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 12:07:08 +03:00
bcb4dc36be deploy(labtools.pro): LIVE на snolla 0.42.1 — in-place bump живого прода (стек 19)
Финал тиража 0.42.1 (3/3 live-редеплоя закрыты: labtools.ru+emspb+labtools.pro).
Оператор дал отмашку на боевой apply.

- labtools-pro:0610432 (0.28.7→0.42.1, digest 3d543fc). Acceptance С VDS на
  новом образе: 25 sitemap page-locs все 200, 0 потерь контента.
- Order-парити 3 секции MATCH (фикс liquid 0.10.2): presses=plg-20,plg-12;
  milling=milling-jars,grinding-media; press-forms=13 == прод.
- Live-smoke GREEN, TLS CN=labtools.pro не тронут. Rollback labtools-pro:7bd9fae.

Compose source-of-truth обновлён. Прог квитирован.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 12:04:04 +03:00
55a873731f deploy(labtools.ru+emspb): LIVE на snolla 0.42.1 — in-place bump живого прода (стеки 17/18)
Тираж 0.42.1, оператор дал отмашку на боевой apply. Оба = редеплой ЖИВОГО
прода in-place (не greenfield), acceptance на новом образе С VDS ДО swap.

- labtools.ru: labtools:566d41c (0.28.2→0.42.1). Sitemap 38 page-locs
  (0.42.1 починил дефицитный sitemap: sections 1→6, products 2→24),
  order-фикс plg-20,plg-12,plg-25,pgr-10 == прод, 0 потерь контента.
  Live-smoke GREEN, TLS не тронут. Rollback labtools:43e28ba.
- emspb.ru: emspb:95a5c42 (0.28.4→0.42.1). 29 sitemap-роутов все 200,
  0 потерь. Live-smoke GREEN. TLS SAN-серт валиден. Rollback emspb:b6e361a.

Compose source-of-truth обновлён на новые теги. Оба прога квитированы.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 11:59:08 +03:00
5e1b0b2538 meta(tasks): create [labtools-pro-deploy-snolla-0-42-1] in OpeItcLoc03/admin 2026-07-05 08:57:29 +00:00
ddb82815c7 meta(tasks): close [emspb-deploy-snolla-0-42-0] in OpeItcLoc03/admin 2026-07-05 08:36:03 +00:00
173278dab7 meta(tasks): create [emspb-deploy-snolla-0-42-1] in OpeItcLoc03/admin 2026-07-05 08:35:57 +00:00
d3b442a775 meta(tasks): create [emspb-deploy-snolla-0-42-0] in OpeItcLoc03/admin 2026-07-05 08:34:30 +00:00
a57504c4e5 meta(tasks): create [labtools-ru-deploy-snolla-0-42-1] in OpeItcLoc03/admin 2026-07-05 08:31:44 +00:00
78f23a6561 cutover(kupimknigi): LIVE на VDS — DNS reg.ru→89.253.255.94, боевой Host в стек 21, LE-серт GREEN
Оператор флипнул DNS, подтверждён на ns1+ns2.reg.ru. Боевой Host(kupimknigi.spb.ru)
в стек 21 (staging-host убран), LE-серт CN=kupimknigi.spb.ru valid Jul5→Oct3.
Live-smoke GREEN: /→200 H1, robots/тема-css 200, callback 301. RUVDS=rollback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:50:35 +03:00
96ae400941 meta(handoff): поправка — тираж не завершён, ещё 3 сайта (labtools.ru/pro/emspb) в полёте на 0.42.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:34:07 +03:00
6f79ffc64e meta(handoff): kupimknigi добавлен в тираж (стек 21, 9608ff6) — оба сайта staging GREEN, ждут cutover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:32:27 +03:00
84f4852f7f deploy(kupimknigi): staging стек 21 (новый) → 9608ff6 (snolla 0.42.0) — smoke GREEN, паритет prod
[kupimknigi-deploy-snolla-0-42-0] 🟢 done. Собран на VDS, Portainer-стек 21 создан
(env verbatim из стека 20), контейнер healthy. Staging-smoke с VDS: / 200==prod,
H1 идентичен, тема-ассеты 200, форма+canonical паритет. Cutover=operator-gated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:31:33 +03:00
76f52661ca task(kupimknigi-deploy-snolla-0-42-0): VDS-staging образ на snolla@0.42.0
Финал тиража. dev-source victor/kupimknigi.spb.ru HEAD 9608ff6, код закрыт
(re-review PASS, docker-валидация GREEN). Одностраничник — deploy тривиальный.
Cutover operator-gated (kupimknigi DNS сейчас на RUVDS, разрулим отдельно).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:24:43 +03:00
a668313797 meta(handoff): staging пересобран на 0.42.0 (ed96b18); образ к cutover обновлён; deploy-таска 🟢
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:27:59 +03:00
5ef3dc1559 deploy(tandemmebel): staging стек 20 → ed96b18 (snolla 0.42.0/core 0.24.0) — DoD GREEN 172/172 + gallery 12/12
[tandemmebel-deploy-snolla-0-42-0] 🟢 done. Собран на VDS, стек 20 healthy,
acceptance#1 SSR /projects→200, acceptance#2 completeness-DoD с VDS зелёный.
Cutover остаётся DNS-gated ([tandemmebel-web-vds-deploy]) — образ к флипу=ed96b18.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:26:39 +03:00
4aa04d6f0f meta(tasks): [tandemmebel-deploy-snolla-0-42-0] 🔴 unblocked — dev запушил бамп sha ed96b18 (0.42.0); build на VDS запущен
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:18:55 +03:00
ed4c7b669b meta(tasks): [tandemmebel-deploy-snolla-0-42-0] 🔵 BLOCKED — консюмер-пин tandemmebel.ru не бампнут (0.40→0.42 не запушен); запрос dev-source отправлен
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:09:55 +03:00
056fdb2344 meta(tasks): create [tandemmebel-deploy-snolla-0-42-0] in OpeItcLoc03/admin 2026-07-04 19:59:45 +00:00
a19fac880a meta(handoff): cutover ОТЛОЖЕН оператором — триггер = владелец флипает DNS; порядок зафиксирован
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:30:50 +03:00
048954bca1 meta(handoff): gallery GREEN на b02ca18; next=cutover (gated); переписка с прогером заморожена оператором
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:25:54 +03:00
ea8672f09c deploy(tandemmebel): staging стек 20 → b02ca18 (core 0.16.2) — gallery GREEN 12/12
Ребилд по коррекции workshop: образ tandemmebel:b02ca18 (core 0.16.2 SlugFeedPage-fix,
digest f8672218) собран на VDS, стек 20 передеплоен (env 8/8, healthy). DoD-чек GREEN:
gallery-грид staging==prod точно на всех 12 роутах, крошки+title наполнены (были пустые),
байты 28508≈прод 28253. Предыдущий a173401 давал пустой грид — 0.16.2 закрыл.

Флагнул сомнение перед сборкой (DB-дамп: /gallery = конвенционный саб-роут, не feed) —
рендер-чек опроверг, фикс сработал. Cutover HELD. Прогеру не пинговал (по указанию оператора).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:25:04 +03:00
f1fb102328 meta(handoff): дефект = gallery FeedPage-VM; staging на a173401 ждёт фикс прогера + DoD-чек зашит
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:00:16 +03:00
b299c7d5da deploy(tandemmebel): staging стек 20 → a173401 (FeedPages) — роуты 404→200, но grid+крошки ПУСТЫЕ (VM-баг у прогера)
Ребилд по ops-таску workshop: образ tandemmebel:a173401 (snolla 0.35.0/core
0.16.0/data 0.13.0, digest 6962bd97) собран на VDS, стек 20 передеплоен через
Portainer API (env 8/8, healthy). FeedPages чинит роутинг gallery 404→200 (12/12).

RED на рендер-чеке: gallery-grid пустой на всех роутах (staging /galleries/*/images
= 0 vs prod 24/80/62), breadcrumb itemprop=name пустые. Корень — FeedPage-VM не
прокидывает item в шаблон. Деплой чист; фикс на прогере. Пропинговал с уликами.
Cutover HELD.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 12:58:40 +03:00
725c889d78 meta(handoff): tandemmebel sharp-staging GREEN but BLOCKED — operator found new visual defect on eyeball, fix next session
Session end. tandemmebel тираж: sharp-staging (стек 20, образ 68b93a9) зелёный по авто-гейтам,
но оператор на визуальной проверке https://tandemmebel.vds.kzntsv.site нашёл новый визуальный
дефект (специфику не назвал → спросить в новой сессии). Cutover HELD, RUVDS не тронут.
NEXT_SESSION.md с полной хронологией + состоянием инфры + cutover-планом + peer-дисциплиной.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 12:23:08 +03:00
5be6662c60 deploy(tandemmebel): SHARP staging GREEN — stack 20 on image 68b93a9, cutover held on operator
Пивот tandemmebel на in-process sharp завершён (snolla 0.34.0/core 0.15.0).

- Образ registry.kzntsv.site/tandemmebel:68b93a9 (digest 12288b15) собран на VDS из sha 68b93a95.
- Стек 20 обновлён на sharp-образ (env verbatim 8/8, PullImage:false). Контейнер healthy, лог чист.
- Compose: движок 0.34.0/0.15.0, imgproxy из tandem-пути убран (sharp in-process), egress без imgproxy.

Parity-smoke GREEN: nav 8/8; sitemap staging⊇prod (prod-only=0, +12 categories benign); 2012-посты 31/31;
redirects 301/301; sharp media = slug-URL 200 webp serve-bytes, 0 /imgproxy-рефов; variant-cache пишется
(32 объекта, NoSuchBucket снят); watermark визуально ✓ featured+lightbox, gallery-small чистый.

Находка (не блокер): осиротевший imgproxy-блок в production.json пина эмпирически мёртв (0 /imgproxy-рефов) → heads-up воркшопу вычистить.

HOLD cutover — DNS gated оператором (reg.ru → 89.253.255.94).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 11:51:19 +03:00
34df24be85 meta(tasks): create [tandemmebel-sharp-staging-rebuild] in OpeItcLoc03/admin 2026-07-04 08:42:45 +00:00
9475d9130d ops(minio): close [minio-variant-cache-bucket] — variant-cache created + writable, sharp-prereq closed
Создан бакет variant-cache в shared MinIO (minio.kzntsv.site/books-vds) для sharp resize+watermark вариантов
(S3-эквивалент легаси App_Data/imageCache; без него 500 NoSuchBucket на всех sharp-картинках).
Грант: snolla S3-креды == MinIO root (сверено) → mode-server-fs даёт полный доступ by construction, IAM не нужен.
Write-verify под деплойными кредами: put→stat→get(md5 match 78fab481)→delete→gone. Другие бакеты не тронуты.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 10:55:28 +03:00
ebcdd128f0 meta(tasks): create [minio-variant-cache-bucket] in OpeItcLoc03/admin 2026-07-04 07:50:45 +00:00
9daea393a2 ops(imgproxy): close [imgproxy-stack29-watermark-rollback] — WATERMARK_DATA removed from stack 29, prod tenants verified clean
Оператор сменил watermark-подход на in-process sharp → снял глиф со SHARED imgproxy стека 29 (books-vds).
Вырезал IMGPROXY_WATERMARK_DATA (byte-identical pre-watermark бэкапу, cross-check true) → PUT+redeploy+purge.
Verify: pilorama98 (главный консюмер) 3 рендера == baseline (43950/172042/160010B); stostayer НЕ imgproxy-консюмер (не задет); tandem featured→чистый (ожидаемо). Глиф-бинарь 7127e92a оставлен для sharp.
tandemmebel-deploy теперь ждёт пересбора образа на sharp-пин.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 09:22:38 +03:00
38368adccd meta(tasks): create [imgproxy-stack29-watermark-rollback] in OpeItcLoc03/admin 2026-07-04 06:15:36 +00:00
0e1bceb14d meta(tandemmebel): cutover PAUSED by operator — imgproxy-vs-sharp watermark review; staging-20 held UP 2026-07-04 08:38:49 +03:00
85fa2d7ad9 deploy(tandemmebel): staging GREEN on vds-kzntsv — stack 20, image 0facb35, cutover held on operator
Финал тиража tandemmebel. Ops-часть до cutover, всё зелёное.

- Образ registry.kzntsv.site/tandemmebel:0facb35 (snolla@0.32.2/core@0.13.8,
  digest 464d2f22, watermark-override в пине) собран НА VDS (обход traefik-499).
- Стек Portainer tandemmebel Id 20 (ep1), staging-rule Host(tandemmebel.vds.kzntsv.site),
  env verbatim из labtools стека 17 (8/8). Контейнер healthy, MSSQL+S3, listening :5000.
  Source-of-truth compose: host-stacks/vds-kzntsv/tandemmebel.compose.yml.
- PURGE imgproxy-nginx кэша (books-vds стек 29) — stale-clean featured ушли,
  featured отдаёт 27820B вотермарк без cache-bust.

Staging-smoke с VDS GREEN: status-parity 10/10; sitemap staging index (184) ⊇
prod (172) prod-only=0 + 12 /projects/categories/* (benign#3); trailing 301/301;
blog-post 200 +3.5KB (benign#2 imgproxy vs /galleries/ 26/26); 2012-посты 31/31;
theme 21/22 MD5-OK. Находка (не блокер): prod Gotham-Pro.css=0B пустой,
staging=4436B корректный → cutover чинит латентный прод-баг шрифта.

HOLD cutover — DNS-флип gated оператором (reg.ru → 89.253.255.94).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 08:34:36 +03:00
f5a8a0256a meta(tasks): create [tandemmebel-web-vds-deploy] in OpeItcLoc03/admin 2026-07-04 05:18:05 +00:00
0188507344 ops(imgproxy): close [imgproxy-watermark-glyph-books-vds] — tandem glyph LIVE on books-vds stack 29
Ops-подхват по тиражу tandemmebel. Воркшоп попросил выставить брендовый
глиф-вотермарк на imgproxy стек 29 (books-vds, отдаёт картинки всем тенантам).

Первый base64 (в inbox И в закоммиченном таске) был БИТЫЙ на источнике —
tasks_create порезал 10КБ-поле: sha f8f0…≠e995…, IEND нет, зацикленный хвост.
Поймал sha256-сверкой ДО прода → не запушил битьё (imgproxy бы упал на парсе
WATERMARK_DATA = отвал картинок у всех тенантов).

Воркшоп до-доставил logo.png бинарём в git (7127e92a, sha256 e995…971fc, 8015B).
PUT стека 29 (Portainer portainer.kzntsv.site ep1, X-API-Key, IMGPROXY_WATERMARK_DATA
inline env, PullImage:false, БЕЗ глобального _OPACITY).

Smoke cache-busted: A tandem вотермарк виден глазами (27294→27820B);
B pilorama контроль byte-identical 160010B — глобальная opacity не просочилась.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 07:53:56 +03:00
3380b56a19 meta(tasks): create [imgproxy-watermark-glyph-books-vds] in OpeItcLoc03/admin 2026-07-04 04:30:04 +00:00
2e5adcf11e deploy(cms-s3): S3 FileStorage provider LIVE on RUVDS — admin↔MinIO split-brain closed
Разбор 500 на /admin/assets/<owner>/delete → корень ACL (app pool RX-only на
App_Data после scp-миграции) → полная развязка хранилища CMS:

- S3 FileStorage провайдер (MoreThenCms.FileStorage.S3) построен (координация с
  интерн-сессией) и раскатан LIVE на прод RUVDS: 6 контентных классов web.config
  → S3/MinIO, кэши остались Local. Смок 7 тенантов 200/301, 0×500, S3-read byte-parity.
  Upload-гоча: UseChunkEncoding=false (MinIO ⊥ AWSSDK aws-chunked).
- Весь локальный контент RUVDS → MinIO (galleries 5.3G, themes 2.7G, maxMind);
  imageCache-блоат (2.1G) выпилен из бакета themes.
- stostayer.old определён как stale-копия (не мигрировать).

Новый concept: snolla-admin-appdata-acl-500-after-scp-migration.
Трекеры: morethencms-s3-filestorage-provider (LIVE), reconcile-local-assets-to-minio (done).
Rollback: web.config.bak-pre-s3-2026-07-03 на хосте.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 13:47:21 +03:00
d677f530b4 meta(handoff): whole snolla batch LIVE on VDS — emspb+labtools.ru+labtools.pro; 4 commits await push
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 13:02:21 +03:00
a9f4f3a673 deploy(labtools): 43e28ba LIVE on vds-kzntsv — cutover done, labtools.ru on VDS
DNS zone is on Yandex DNS (dns1/dns2.yandex.net), not reg.ru. Flip propagated
unevenly (dns2 first, dns1 lagged); cutover gate = BOTH authoritative Yandex NS
agree apex+www -> 89.253.255.94 (monitor waited for it) so LE HTTP-01 can't hit
RUVDS via a stale auth server and burn the rate-limit.

Stack 17 traefik-rule -> Host(labtools.ru)||Host(www.labtools.ru) via Portainer
PUT (env 8/8 preserved, pullImage=false). LE cert issued (~t+20s; brief self-signed
window during issuance). Live-smoke GREEN: both hosts 200 (nav+catalog+products),
redirects parity (trailing/lowercase/.php), sitemap index host=labtools.ru (this
tenant's siteUrl is non-www), theme assets byte-identical (RUVDS 301 apex->www made
the direct md5 an artifact; -L => MD5-OK). Staging host removed (->404). External:
apex->VDS 200; www still split-brain on RUVDS cache (200, identical content, TTL 6h).
RUVDS left intact as rollback.

Task closed. Whole batch done: labtools.ru + labtools.pro LIVE on VDS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 12:42:57 +03:00
ed99f2225b deploy(labtools-pro): b LIVE on vds-kzntsv — cutover done, labtools.pro on VDS
DNS flip confirmed at authoritative ns1.reg.ru (Resolve-DnsName) + 8.8.8.8 ->
89.253.255.94 (labtools.pro/www; NOT labtools.ru). Earlier checks hit stale TTL
cache; authoritative NS was the truth.

Stack 19 traefik-rule -> Host(labtools.pro)||Host(www.labtools.pro) via Portainer
PUT (env 8/8 preserved, pullImage=false). LE cert issued instantly (ssl_verify=0).
Live-smoke GREEN: both hosts 200 (nav+catalog+products), redirects parity, sitemap
index host=www, real content (lang=en). Staging host removed (->404). External
check from RUVDS box: labtools.pro/www -> 89.253.255.94 HTTP 200 trusted cert.
RUVDS labtools.pro left intact as rollback.

Task closed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 12:07:52 +03:00
531d7f0fda deploy(labtools-pro): staging GREEN on vds-kzntsv — image 7bd9fae, stack 19, parity vs prod
Mirror of emspb deploy. Built registry.kzntsv.site/labtools-pro:7bd9fae on VDS
(guard: default.json absent), created Portainer stack labtools-pro (Id 19, env
verbatim from labtools stack 17). Container healthy, MSSQL+S3 connected.

Staging smoke vs www.labtools.pro (RUVDS) GREEN, run from VDS:
- nav + 3 catalog sections + products 200/200
- redirects (catalog#1->lshm-750, /Contacts lowercase, trailing) 301 parity
- sitemap: snolla index of 7 children, aggregate 25 URLs == prod set, host=www (R3)
- theme assets 7/7 md5-identical; Cache-Control absent (correct, CachingOptions=[])
- content pages real body, delta +155..222B (host length in canonical)

Cosmetic (not a defect, flagged to workshop): startup banner logs "labtools.ru
(snolla)" — scaffold constant; site identity is siteId 663F9410 in production.json.

Cutover (live DNS) is gated on operator. Runbook + compose committed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 11:38:56 +03:00
47f24752aa meta(tasks): create [labtools-pro-web-vds-deploy] in OpeItcLoc03/admin 2026-07-02 08:27:40 +00:00
353e3dcd8a meta(handoff): emspb LIVE+cutover done, labtools still awaiting DNS-flip
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 00:39:41 +03:00