meta(handoff): write NEXT_SESSION — snolla local admin + on-snolla design

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-20 09:45:32 +03:00
parent b1b0092cdc
commit d4278e79f9

View File

@@ -1,73 +1,65 @@
--- ---
_last_updated_: 2026-07-13T19:50:00Z _last_updated_: 2026-07-20T07:00:00Z
session_id: 2026-07-13-tandemmebel-8df10ee-deploy session_id: 2026-07-20-snolla-local-admin-on-snolla-design
prev_session_id: 2026-07-13-stostayer-loader-deploy prev_session_id: 2026-07-13-tandemmebel-8df10ee-deploy
--- ---
# Next session handoff # Next session handoff
## Эта сессия — tandemmebel 8df10ee deploy (DONE, прод живой) ## Эта сессия — design: SNOLLA local admin restore + on.snolla.com → VDS
🟢 **[tandemmebel-deploy-drop-fb-tw-gplus-buttons] ЗАКРЫТА.** In-place template bump Спека написана и закоммичена: `.wiki/concepts/snolla-local-admin-and-on-snolla-migration-design.md`
`0cd9351 → 8df10ee` на проде (стек 20), убраны FB/Twitter/Google+ share-кнопки (commit `b1b0092c`). Две таски заведены в `.tasks/` + board-entries в STATUS.md.
(экстремистистская символика РФ), оставлены ВК+Одноклассники. Template-only
(`apps/web/views/social_buttons.liquid`, 1 file 12 delet), snolla 0.42.1 НЕ менялся.
- **Верификация поймала расхождение:** tandemmebel-записка утверждала live=`ed96b18`/0.42.0, **Task A — snolla-local-admin-restore** (⚪ ready):
фактически `0cd9351`/0.42.1. gitea `compare/0cd9351...8df10ee`=`total_commits:1` → фикс на Восстановить локальный catch-all IIS-сайт `snolla` (снесён 2026-06-08 при decommission
правильной 0.42.1 базе, yarn.lock идентичен → регрессии sitemap нет. windows-recovery-host) копированием `C:\sites\snolla\` с RUVDS (текущий прод-админ с уже
- Build на VDS (чистый gitea-архив 8df10ee, build-arg VERDACCIO_TOKEN=books-ci JWT), digest применённым MinIO drop-in). Conn → `mssql.kzntsv.site:1433` Catalog=MoreThenCms. Доступ
`sha256:30a7e5ab82f2bf371042f1b5fa0cd7ac5ceda71379d1da59e148dee8166bd560`. `<alias>.snolla.com/admin` через hosts-override, **один AppPool**, binding `*:80` + FW block
- Completeness-gate: sitemap NEW==PROD **184=184 identical**, 0 регрессий. Live-smoke 4 inbound. Развилка адресации confirmed оператором (catch-all+hosts, не per-port).
share-block страницы → vk+ok / fb-tw-gp=0. TLS-серт не дёрнут.
- Swap через Portainer JWT (API-key `ptr_*` даёт 401 → workaround JWT), env 8/8 preserve,
`prune:false, pullImage:true`. Tandemmebel-сессия подтвердила, discrepancy-урок усвоен.
- **Records:** STATUS.md _Updated 2026-07-13; runbook секция In-place bump 8df10ee
(`.wiki/concepts/tandemmebel-vds-deploy-runbook.md`); compose source-of-truth
`host-stacks/vds-kzntsv/tandemmebel.compose.yml` = 8df10ee. Коммиты `632c843f` (records)
+ `fe8e5882` (tasks_close).
- **Откат:** PUT стека 20 → `0cd9351` (0.42.1, {% order %} fix) / `ed96b18` (0.42.0, в registry,
стёрт с VDS при disk-cleanup 2026-07-13 — `pullImage:true` дотянет) / `b02ca18`; ИЛИ revert
DNS→80.64.31.36 (RUVDS IIS жив).
### Loose end (low priority, НЕ блокер) **Task B — on-snolla-vds-migration** (⚪ ready, blocked by A):
- **Portainer stack 20 file — устаревшие STAGING-комменты** (строки 16-17 «Домен: STAGING», on.snolla.com (siteId `B9ECDB50-2B93-4CE5-B238-A9918B3F9CF7`, alias `on`, Title "Internal Site",
53 «STAGING-RULE. Cutover: после flip DNS сменить на Host(...)»). Сама `traefik...rule` culture `en`) с RUVDS IIS → VDS Node snolla-app 0.42.1. Исходников нет → реконструкция
(строка 55) уже LIVE, совпадает с label'ом контейнера — функционально нейтрально. При Liquid-шаблонов из боевого `https://on.snolla.com/` + локального админа (Task A). По рецепту
деплое 8df10ee обновлён только image-line коммент. При следующем full-sync выровнять `tandemmebel-vds-deploy-runbook` (cutover) + `snolla-live-prod-inplace-image-bump` (gate).
Portainer file под git source-of-truth (косметика).
### Addresses + siteIds (из MoreThenCms DB, read-only tedious-проб, SA из `pass mssql-vds/sa-password`)
Скрипт `.tmp/dbprobe-sites.mjs` (gitignored). Адреса = `<Alias>.snolla.com/admin`:
- tandemmebel.snolla.com (tandemmebel.ru, 78080707-F6E0-4330-BA30-7922354C2CEF)
- labtools.snolla.com (labtools.ru, D375C419-D787-4FCC-8934-A3B9DC951006)
- labtoolspro.snolla.com (labtools.pro, 663F9410-A6CC-4651-9A5C-62844A313957)
- emspb.snolla.com (emspb.ru, 96EBC481-D26A-47BE-B660-13D49E7D0A61)
- kupimknigi.snolla.com (kupimknigi.spb.ru, E924A354-0377-4E1E-80C6-2EB0194AA55F)
- on.snolla.com (on.snolla.com, B9ECDB50-2B93-4CE5-B238-A9918B3F9CF7)
## Recent commits ## Recent commits
- fe8e5882 meta(tasks): close [tandemmebel-deploy-drop-fb-tw-gplus-buttons] in OpeItcLoc03/admin - b1b0092c design(snolla): local .NET admin restore + on.snolla.com VDS migration
- 632c843f deploy(tandemmebel): 8df10ee LIVE — drop FB/Twitter/Google+ share buttons - a02c4b86 wiki: ingest de-vds-3xui source chronicle + gitignore .tmp/.tasks/.lock
- 94e5d77c meta(tasks): create [tandemmebel-deploy-drop-fb-tw-gplus-buttons] in OpeItcLoc03/admin - 543ded79 wiki: de-vds-3xui real RF-client confirmed
- 7e02d611 docs(wiki): vds-kzntsv disk cleanup 94%→74% + container-log rotation guard
- 8230f891 / 2e180029 meta(tasks): vehicles-loader-redeploy-per-group-rate-diff (create + update)
- 135da254 chore: gitignore .zcode/
## Open треки ## Open треки
| Трек | Готовность | Entry-point | | Трек | Готовность | Entry-point |
|---|---|---| |---|---|---|
| vehicles-loader 0.4.1 runtime verify | 🔴 active — deployed, verify pending | После **07-14 06:21 MSK**: SSH `new.stostayer.ru:20435` (victor, креды `pass stostayer/client`), проверить новый `importRun` `status=ok` + `counts.serviceGenerationRate={replaced:<сотни>, skipped:<~41k>}`, `serviceModificationRate={replaced:<сотни>, skipped:<~5k>}`, `duration < ~93 мин`. Если `replaced` ~44k/6.7k — образ из старого кода (но code-verify уже GREEN: rateDiff.js/replaceGroup.js в образе есть). Откат: `docker tag docker.stostayer.ru/vehicles-loader:0.4.0 vehicles-loader:latest`. User сказал «завтра посмотрим вместе». | | snolla-local-admin-restore (Task A) | ⚪ ready — ждёт SSH RUVDS verify + DB-креды | `.tasks/snolla-local-admin-restore.md`; spec §Task A. Шаг 0: read-only SSH RUVDS (`pass show ruvds-iis/full-env`) — проверить C:\sites\snolla\ + MinIO drop-in в Web.config. |
| books-vds → vds-kzntsv консолидация | оценено, НЕ хватает ресурсов | RAM: .94 free 1.7 GiB (swap=0) vs books 23+ GiB (на .133 уходит 3.3 GiB в swap). Диск: .94 было 11 GiB free (94%), после чистки 39 GiB; books тащит ~1520 GiB. CPU хватает (6 ядер idle). Решение за user. | | on-snolla-vds-migration (Task B) | ⚪ ready, blocked by A | `.tasks/on-snolla-vds-migration.md`; spec §Task B. |
| ntfy push.kzntsv.site cert-pinning | починено на телефоне (pin убран) | Повтор при каждом LE-renewal ~90д, если pin снова включат. Сервер НЕ трогать. | | vehicles-loader 0.4.1 runtime verify | 🔴 active — deployed, verify pending (просрочено с 07-14) | SSH `new.stostayer.ru:20435` (victor, `pass stostayer/client`), проверить importRun status=ok + counts. Откат: `docker tag .../vehicles-loader:0.4.0 vehicles-loader:latest`. |
| books-vds → vds-kzntsv консолидация | оценено, НЕ хватает ресурсов | RAM/disk на .94 не лезет. Решение за user. |
## Спроси user'а ## Спроси user'а
- **Spec review** — `b1b0092c` / `.wiki/concepts/snolla-local-admin-and-on-snolla-migration-design.md`. Ок? После approve → writing-plans (план в `.tasks/<slug>.md` по дисциплине, не docs/superpowers/).
- **books-vds консолидация**: свежий Ubuntu-VDS под books, апгрейд тарифа .94 (Rusonyx: +RAM/+disk), или оставить на EOL CentOS 7 (.133)? Оценка этой сессии — на .94 не лезет (RAM+диск). - **Task A first step:** дать добло на read-only SSH RUVDS (verify source + MinIO state)?
- **Durable build-fix в stostayer.new** (cross-project): `packages/vehicles-loader/Dockerfile` — добавить `ENV VERDACCIO_TOKEN=unused` в deps-стейдж (сеть off → токен не нужен) + закоммитить root `.dockerignore`. Сейчас build ломается на unresolved `${VERDACCIO_TOKEN}` (committed в `393b7d3` после Dockerfile) и тащит жирный контекст (node_modules/.worktrees). Делаем коммит в `victor/stostayer.new`? - **Open Q из spec:** (1) имя репо для on.snolla.com (`victor/on-snolla`?); (2) MoreThenCms DB app-аккаунт + путь в `pass` (SA есть `mssql-vds/sa-password`, но админ юзает app-аккаунт — завести/найти?); (3) включать все ~60 сайтов в локальный админ или только тираж(5)+on.snolla.com.
- **books-vds консолидация**: свежий VDS / апгрейд .94 / оставить на EOL CentOS .133?
## Не делать (preemptive guards) ## Не делать (preemptive guards)
- **НЕ SSH-action на RUVDS без добла** — user уже раз отверг tool-call на RUVDS-SSH (хочет явное подтверждение); read-only verify — только после ок.
- **НЕ retry-push** в `docker.stostayer.ru` — один push, сбой → стоп + к человеку. Инцидент 2026-06-17: retry-шторм забанил VPN-IP, весь дом→хост :443 лёг. - **НЕ деплоить vehicles-loader** из кода без rateDiff (`85ca936`). Verify `rateDiff.js`/`replaceGroup.js` в образе.
- **НЕ деплоить vehicles-loader** из кода без rateDiff (`85ca936`). Перед deploy — verify что в образе есть `src/sync/rateDiff.js` (rateSetsEqual) + `src/sync/replaceGroup.js` (replaceRatesForGroups). - **НЕ retry-push** в `docker.stostayer.ru` (бан VPN-IP, инцидент 2026-06-17).
- **НЕ чинить ntfy-пин на сервере** — это client-side (телефон). Сервер: cert валиден, ntfy healthy, `/healthz` 200. - **НЕ netplan** на vds-kzntsv; **НЕ сжимать** books на .94 (RAM/disk).
- На **vds-kzntsv НЕ netplan** (anti-pattern, outage 2026-05-28). - **НЕ ставить URL Rewrite rule** локальному админу (нет traefik → `:port` leak, см. cms-server-port-leak-fix).
- **НЕ сжимать** books-стек на .94 — RAM/disk не хватает (оценено этой сессией). - **pull перед работой** — admin на master `b1b0092c` (local, не push'нуто — спросить перед push по Rule 4).
- **pull перед работой** — admin чист (local==origin `7e02d611`); stostayer.new на `b86ed40`. Не забывать pull (user поправлял этой сессией).
## Memory updates за сессию ## Memory updates за сессию
- (пока не сохранял — если design approved, возможно memory: «SNOLLA admin addressing = <alias>.snolla.com/admin catch-all IIS, siteId из dbo.Sites by alias»; и обновить windows-recovery-host entity — планируется восстановление snolla IIS-сайта локально)
- **new**: `ntfy-android-cert-pinning-breaks-on-le-renewal.md` — LE-renewal (~90д) ломает pinned ntfy-клиент («fingerprint mismatch / connection lost»); фикс на телефоне (re-pin или отключить pinning → system CA), сервер не трогать.
- **wiki**: `entities/vds-kzntsv.md` — Known issues += 2026-07-13 disk cleanup (контейнерные логи 19 GiB, owncloud 13 GiB) + logrotate guard (`/etc/logrotate.d/docker-containers`, copytruncate 200M hourly) + hourly cron; Open issues — GC-cron срочность снижена (94%→74%), container-log rotation DONE.