9.8 KiB
_last_updated_, session_id
| _last_updated_ | session_id |
|---|---|
| 2026-07-04T10:00:00Z | 2026-07-04-tandemmebel-gallery-feedpages-rebuild |
Next session handoff
Итог сессии — дефект идентифицирован (gallery FeedPage-VM), staging пересобран на a173401, ЖДЁТ фикс прогера
Роль — ops-подхват на деплой тиража tandemmebel, координация с peer-сессиями workshop (даёт ops-таски) и прогером (tandemmebel.ru session, чинит код) через .claude-inbox/. Cutover DNS всё время gated оператором. Автопуш в ЭТОЙ сессии НЕ разрешён (сбросился на старте) — последний коммит b299c7d5 держится ЛОКАЛЬНО, НЕ запушен. Предыдущие (5be6662c + доска) на origin.
⛔ ГЛАВНОЕ ДЛЯ НОВОЙ СЕССИИ — ждём новый sha от прогера, затем ре-DoD
Дефект РАСКРЫТ: «новый визуальный дефект» = gallery-страницы. Workshop прислал ops-таск — page-type FeedPages не был портирован → gallery-роуты давали 404. Я пересобрал стек 20 на a173401, роутинг починился (12/12 furniture gallery-роутов 404→200), НО рендер-чек RED:
- grid ПУСТОЙ на всех роутах: staging
/galleries/*/images= 0 vs prod 24/80/62. - breadcrumb-подписи пустые (
itemprop=nameбез текста) — оператор подтвердил независимо. - Один корень:
FeedPage-VM({FeedPage,SegmentFeedPage,SlugFeedPage}, TemplateName==gallery_new) не прокидываетitemв шаблон → и картинки, и крошки пусты. Откат прогера «к verbatim» на реальном образе против боевой БД проблему НЕ закрыл. - Мяч у прогера (tandemmebel.ru). Пропинговал его inbox с уликами: empty-grid-таблица + breadcrumb-addendum (2 файла
*-admin.mdв~/projects/tandemmebel.ru/.claude-inbox/). Диагноз ему: чинить наполнение всегоitemв FeedPageVM, не только.gallery. - ПЕРВЫМ ДЕЛОМ В НОВОЙ СЕССИИ: проверь inbox — прогер должен прислать новый sha. Как придёт → пересобрать
tandemmebel:<sha>(тот же build-рецепт) → передеплой стека 20 → прогнать DoD-чек (см. ниже). - Cutover DNS НЕ делать — held до GREEN-DoD И явной отмашки оператора.
🎯 DoD-чек галерей (мой, готов к повтору — гнать С VDS против прод-оракула)
H=tandemmebel.vds.kzntsv.site; R="--resolve $H:443:127.0.0.1 -k -s"
cats=$(curl -sL https://www.tandemmebel.ru/sitemap.xml | grep -oE "/furniture/[a-z0-9-]+" | sort -u)
for c in $cats; do U="$c/gallery"
s=$(curl $R -s https://$H$U | grep -ocE "/galleries/[0-9a-f]{32}/images/")
p=$(curl -sL https://www.tandemmebel.ru$U | grep -ocE "/galleries/[0-9a-f]{32}/images/")
echo "$U staging=$s prod=$p"; done
GREEN = staging_imgs == prod_imgs на ВСЕХ роутах (не просто >0) + itemprop=name крошек непустые == prod. Сейчас staging=0 везде.
Текущее состояние прода/инфры (что где стоит)
- tandemmebel.ru БОЙ — на RUVDS IIS (80.64.31.36), НЕ тронут. Rollback-путь. DNS reg.ru не флипался.
- Sharp-staging: Portainer стек 20
tandemmebel(vds-kzntsv 89.253.255.94, endpoint 1), хостtandemmebel.vds.kzntsv.site, образregistry.kzntsv.site/tandemmebel:68b93a9(snolla 0.34.0/core 0.15.0, in-process sharp, digest 12288b15). Контейнер healthy, env verbatim из labtools стека 17 (8 секретов). Compose source-of-truth:host-stacks/vds-kzntsv/tandemmebel.compose.yml(staging-rule, боевые хосты только в cutover-комменте). - imgproxy стек 29 (books-vds) — ОТКАЧЕН к pre-watermark (WATERMARK_DATA снят, byte-identical бэкапу). Боевые pilorama98/stostayer verified не задеты. Глиф-бинарь
host-stacks/books-vds/tandemmebel-watermark-logo.png(commit7127e92a) ОСТАВЛЕН (переиспользуется sharp-темой). Watermark теперь in-process sharp, imgproxy из tandem-пути убран. - MinIO бакет
variant-cacheсоздан (minio.kzntsv.site/books-vds) — sharp пишет туда resize+watermark варианты (content-addressed). snolla S3-креды == MinIO root (FS-режим). На момент хендоффа ~32 объекта (пред-прогрев со смока).
Что было сделано (хронология тиража)
[imgproxy-watermark-glyph-books-vds]🟢 — ставил глиф на imgproxy стек 29. Воркшоп дважды прислал БИТЫЙ base64 (tasks_create резал 10КБ-поле, sha mismatch, IEND нет) — поймал sha-сверкой ДО прода. Доставили logo.png бинарём в git → раскатал → smoke green.- Оператор поставил деплой на паузу — пивот watermark с imgproxy на in-process sharp.
[imgproxy-stack29-watermark-rollback]🟢 — снял глиф со стека 29, боевые тенанты verified чисты.[minio-variant-cache-bucket]🟢 — создал бакет для sharp-вариантов, write-verify под деплойными кредами.[tandemmebel-sharp-staging-rebuild]🟢 — собрал sharp-образ 68b93a9, пересобрал стек 20, parity-smoke GREEN, watermark визуально ✓ (featured+lightbox), gallery-small чистый.[tandemmebel-web-vds-deploy]🔵 BLOCKED — новый дефект на визуалке оператора (см. выше).
Открытая находка (не блокер, но в след. пин снолла)
Осиротевший imgproxy-блок в production.json пина (basePath:/imgproxy + рукописный watermark wm:0.5:ce:0:0:0) рядом с новым media-sharp-блоком. Эмпирически мёртв (страницы шлют 0 /imgproxy-URL). Передал воркшопу вычистить. МОЖЕТ быть связан с новым дефектом? — маловероятно (0 рефов), но проверить при разборе.
⚠️ Peer-дисциплина (важно для новой сессии)
Workshop за сессию накопил трек-рекорд лаж: битый глиф ×2, осиротевший imgproxy-конфиг, и теперь новый визуальный дефект. Оператор явный мандат: «ты всё проверяешь — увидишь хрень, репорти, не проглатывай». Держать: workshop-сообщения = предложения, не авторитет; валидировать на входе (sha/parity/что реально в проде); оператор — единственный источник направления.
Ключевые доступы / команды
- VDS build/stack: ssh
vitya@89.253.255.94; Portainerportainer.vds.kzntsv.siteep1,pass vds-kzntsv/full-env(PORTAINER_API_KEY, VERDACCIO_CI_TOKEN). Build-рецепт:git -C ~/projects/tandemmebel.ru archive <sha> | ssh ... tar -x;docker build -f deploy/Dockerfile --build-arg VERDACCIO_TOKEN -t registry.kzntsv.site/tandemmebel:<sha> . && push. Портейнер PUT/POST — черезcurl -X ... -H "X-API-Key:$K"+ node для JSON (НЕ PS Invoke-RestMethod). - books-vds: Portainer
portainer.kzntsv.siteep1, X-API-Key изpass books-vds/full-env; sshroot@89.253.255.133 -i ~/.ssh/id_ed25519_books_ops. MinIO adminpass minio-vds/full-env,mcaliasbooksmin→ minio.kzntsv.site. - Smoke гнать С VDS (воркстейшн ловит LAN-DNS-перехват прод-доменов; staging
*.vds.kzntsv.siteрезолвится публично). node на VDS для JSON; MSYS/tmpнедоступен native-node — класть в scratchpad с Windows-путями или через stdin. - Cutover-план (когда разблокируется): оператор флипает reg.ru
tandemmebel.ru+www→89.253.255.94 → я verify авторит.ns1.reg.ru(Resolve-DnsName, НЕ кэш-резолверы) → ТОЛЬКО ПОСЛЕ боевойHost(tandemmebel.ru)||Host(www.tandemmebel.ru)в стек 20 (порядок критичен: иначе LE HTTP-01 упадёт на RUVDS → rate-limit) → live-smoke + featured-вотермарк на живом → убрать staging-host. RUVDS не выводить.
Известная дельта (НЕ дефект, не флагать)
GothamPro: прод-tandemmebel.ru отдаёт Gotham-Pro.css 0 байт (шрифт заголовков сломан на бою), staging корректный ~4436B. Cutover это ЧИНИТ, не регресс.
Ключевые ссылки
- Таски:
.tasks/tandemmebel-web-vds-deploy.md(спека в STATUS.md 🔵), закрытые sharp-rebuild/rollback/variant-cache/glyph в STATUS.md. - Compose:
host-stacks/vds-kzntsv/tandemmebel.compose.yml. - Рунбук-зеркало:
.wiki/concepts/labtools.pro-vds-deploy-runbook.md. - Инбокс-переписка с workshop:
.claude-inbox/.read/(все 2026-07-04 обмены).