Commit Graph

67 Commits

Author SHA1 Message Date
9c5d8f5ae2 chore(wiki): F&F round concept sched-admin-client-openapi + task close 2026-08-18 22:29:30 +03:00
114db2956f chore(wiki): concept openapi-generator 3.1 gotchas (F&F sched 2026-08-18) 2026-08-18 22:28:37 +03:00
ec59917956 chore: wiki +2 концепта (nvm-junction isMain gotcha, nvm-windows switch), 4 июльских -блока флипнуты 🟢, handoff: волна вышла, ретест в след. сессии 2026-08-18 21:22:32 +03:00
df1a7ef13b docs(wiki): r8 stand updated — items 4-5 (API 52/52, UI 13/13, findings U1/U2) 2026-08-18 19:12:58 +03:00
dbce833a98 wiki: ingest 2 concepts — sched-fnf-r8-verification-stand + windows-docker-test-harness-gotchas 2026-08-18 18:25:52 +03:00
cb701214a2 docs(wiki): session close — handoff + ingest pilonuxt restart-vs-redeploy (stack 16 deploy day) 2026-08-16 13:41:34 +03:00
0582adbb4f wiki: ingest concepts/snolla-smtp-mail-delivery-2026-08 (postmortem SMTP-инцидента + монитор + рецепт деплоя) 2026-08-14 16:07:26 +03:00
23216c76d6 meta(wiki): FormSubmissions nvarchar coordination closed — op-log decision 2026-08-14 09:20:52 +03:00
003e71630c meta(wiki): MSSQL FormSubmissions.Content varchar→nvarchar (₽ fix) — op-log 2026-08-14 09:12:58 +03:00
be54a21316 meta(wiki): inbox-rename audit — .claude-inbox → .agents/inbox clean (op-log record) 2026-08-14 09:08:17 +03:00
4d3bb2113b meta(wiki): runbook — offline-cache fixed by 5c583f8 (supportedArchitectures), yarn install replenished cache 2026-08-13 12:06:11 +03:00
79e9ce87e8 fix(inbox): runbook letter path .claude-inbox → .agents/inbox 2026-08-13 12:00:41 +03:00
5f7d4fdc30 meta(tasks,wiki): stostayer-web 0.3.23 deploy — task done + runbook nuances (offline-build linux-bins, :9000 port, prod tag) 2026-08-13 11:57:47 +03:00
73b0564d8e wiki(kreknin): автосинк LE-серта git.kreknin.site traefik->nginx (cron 15м) 2026-08-12 19:48:28 +03:00
c2cb6c0801 wiki(kreknin): LE-серт из traefik acme.json в nginx DSM — из LAN без предупреждений
Извлечён серт git.kreknin.site (base64 Certificate/Key) из
/volume1/docker/traefik/letsencrypt/acme.json → /usr/local/etc/nginx/ssl_git_kreknin.*,
nginx reverse proxy переведён на него. Из LAN: LE + Gitea 200. DSM-пароль не нужен.
2026-08-12 19:37:22 +03:00
514a1e991e wiki(kreknin): reverse proxy git.kreknin.site 443→4443 на DSM nginx — из LAN gitea работает
443 на NAS занят встроенным nginx DSM (трафик уходил в Synology вместо traefik).
Добавлен server block в server.ReverseProxy.conf (w3conf) + nginx -s reload:
proxy_pass https://127.0.0.1:4443 (TLS-to-traefik! HTTP на 4443 = 404).
Из LAN: DNS-override → 192.168.1.43:443 → nginx → traefik → gitea 200.
Осталось: LE-серт DSM для git.kreknin.site (нужен GUI DSM).
2026-08-12 19:29:20 +03:00
6844c24b77 wiki(kreknin/keenetic): DNS-override через RCI API решает loopback; концепт keenetic-rci-api
KeeneticOS 5.1.3: hairpin не работает (проверено после обновления) →
статичные DNS-записи ip host git.kreknin.site/kreknin.site → 192.168.1.43
через POST /rci/ parse. Из LAN всё 200. Правила порт-форвардинга = ip.static (to-host MAC).
2026-08-12 18:46:28 +03:00
f8ab0c669b wiki(kreknin): gitea 1.27.1+postgres16 установлен, traefik починен, LE git.kreknin.site live
Чистая установка gitea+postgres на /volume1 (не SSD), админ kreknin.
Traefik: restart policy unless-stopped (лежал с 07-31, restart был no).
Проброс 80/443→8000/4443 в GUI Keenetic (API Viva закрыт).
NAT loopback сломан — DNS-override git.kreknin.site→192.168.1.43 нужен.
Пароли: pass kreknin/keenetic, pass kreknin/gitea.
2026-08-12 11:17:17 +03:00
543b10a464 docs(wiki): namespace-consolidation + admin-api-embed concepts
Документированы два крупнейших изменения сессии 2026-08-04/05:
- Неймспейс-миграция @snollajs→@snolla (17 пакетов, 8 сайтов)
- Admin-api embed в pilonuxt /admin/api, retire стека 25

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-05 00:24:42 +03:00
f56eb2f800 feat(on-snolla): v3 cutover LIVE — snolla 0.43.2 (aws-sdk v2→v3) + runbook migration
v3 pilot on.snolla.com end-goal (user 2026-07-30): bump @snollajs/snolla
0.42.1→0.43.2 + @smithy resolutions (root package.json, on.snolla.com eb8c143).
Portainer PUT stack 22 → registry.kzntsv.site/on-snolla:eb8c143, env-preserving
8/8, mem_limit 512m. Live smoke GREEN: theme asset 200 97324 B (v3 aws-sdk v3
S3-direct read из vds MinIO 2025), sitemap+sub-sitemaps byte-identical, /c 404.
Rollback = 07db7e3 (v2, жив).

runbook migration (дисциплина): scripts/minio-split-cutover/runbook.md →
.wiki/concepts/minio-split-cutover-runbook.md (конвенция: runbook'и в .wiki/concepts/).
Creds normalized → pass show minio-vds/full-env (wiki-конвенция, не plaintext).
+ index.md, log.md, on-snolla-vds-deploy-runbook v3-секция.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-30 14:30:38 +03:00
71dee93e86 @wiki: alias pilonuxt -> pilorama98.ru in prose; keep literal container/stack/image id
Замена прозо-ссылок pilonuxt на pilorama98.ru в 7 файлах, чтоб при поиске
по домену находились ops-записи. Буквальные docker-идентификаторы
(контейнер/стек pilonuxt Id 16, image tag, task-slugs) оставлены с пометкой
«контейнер pilonuxt».

Co-Authored-By: Claude <noreply@anthropic.com>
@
2026-07-29 10:59:39 +03:00
5a93ac780c wiki(snolla): ingest local admin HTTPS binding — self-signed wildcard *.snolla.com on IIS :443
Локальный .NET-админ snolla на HTTPS: pilorama98.snolla.com/admin 404 (не в hosts → VDS)
→ ERR_CONNECTION_CLOSED (HSTS upgrade, нет 443). Fix: IIS-native self-signed wildcard
*.snolla.com на :443 + Trusted Root (без traefik — acme.json пуст, лишний слой). Рабочий
entry-point /admin/account/login (голый /admin → canonical на public — предсуществующее
поведение CMS). +index.md (2 строки, design-док ранее не индексирован) + log.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-29 09:14:29 +03:00
43aa674e5b wiki(stostayer): ingest markdown-render-404 incident postmortem + NEXT_SESSION
Постмортем инцидента 2026-07-24: 404/500 на body_repair_service (stostayer.ru) =
двойной корень. (1) код-баг snolla: viewModels/index.js `import markdown from
'markdown-it'; markdown();` — инстанс выброшен, markdown.render undefined, краш на
markdown-поле-шаблонах (латентный ~3 мес с коммита 1e3f897 2026-04-21). (2) упаковка
exact-pin-staleness: @snollajs/content-api@0.8.0 `workspace:*` запёк
@snollajs/snolla:0.7.4 exact → фиксовая 0.7.7 легла top-level, content-api юзал
nested баговую 0.7.4. yarn resolutions/patch не форсят exact-pin опубликованного
пакета — решено публикацией @snollajs/content-api@0.8.2 (^0.7.7).

Деплой stostayer-web:0.3.22 через pscp SSH:20435 + sudo docker load + Portainer PUT
pullImage:false (без push в docker.stostayer.ru:443, бана нет). 4 URL → 200 публично.
Pre-build чек yarn.lock single-snolla ловит класс. Cleanup
workspace-caret-interpackage-deps — за vitya+snolla.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-24 14:37:53 +03:00
23b1a47c14 wiki(stostayer): ingest stostayer-admin-minio-config — :8090 admin on stostayer MinIO
Fix 2026-07-22: local .NET admin (C:\sites\stostayer\Web.config) S3 providers
re-pointed to stostayer MinIO. 3 bugs in original config: wrong creds
(AKIAJ2YJP72W6ZHCRE6Q = books-vds root, not stayer_minio), wrong endpoint
(minio.stostayer.ru is not S3 API port; prod uses minio-api.stostayer.ru),
wrong region (local -> AmazonS3Exception expecting us-west-1). Creds NOT in
pass — live in stostayer.new config/default.json. Admin now shares prod
storage; manual App_Data mirroring retired.

+ index.md, log.md. Also carries pending handoff (NEXT_SESSION) + runbook
update from 2026-07-21 stostayer-web 0.3.20 deploy session.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-22 10:45:13 +03:00
a02c4b86a2 wiki: ingest de-vds-3xui source chronicle + gitignore .tmp/.tasks/.lock
sources/de-vds-3xui-setup-2026-07-14.md (new) — session chronicle capturing
the 3x-ui 3.5.0 troubleshooting: login 403 = CSRFMiddleware (X-CSRF-Token,
GET {BP}csrf-token), direct DB insert into inbounds no longer renders
(client model split across clients/client_inbounds/client_traffics → use
panel API add with stringified settings), wrapper `x-ui setting` doesn't
persist creds (binary only). Reference JSON lifted from working nl-vds 32030.
Entity sources: bound. +index.md sources line, +log.md ingest entry.
gitignore: .tmp/ (cred-bearing local throwaway, like .scratch/) and
.tasks/.lock (runtime). .tmp/ removed from disk.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-14 15:01:26 +03:00
543ded79bd wiki: de-vds-3xui real RF-client confirmed (session via 32030)
User connected through the DE node right now — plain VLESS 32030 proven
working on real RF client again. Task [de-vds-3xui-setup] closed. Flipped
Проверено block to ; +log.md decision entry.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-14 14:57:52 +03:00
f0965cf512 wiki: ingest de-vds-3xui (Fornex Germany VPN, plain VLESS 32030)
New entity de-vds-3xui — Germany VPS 130.17.17.158 (Fornex, Ubuntu 24.04),
3x-ui 3.5.0 / xray 26.7.11, plain VLESS 32030 security=none (analog of nl-vds-3xui;
masked protocols intentionally NOT raised). Captured 3.5.0 gotchas vs 3.2.7:
CSRF on all panel POSTs (X-CSRF-Token, GET {BP}csrf-token), direct DB INSERT
into inbounds no longer renders (client model split across clients/
client_inbounds/client_traffics → use panel API add), wrapper `x-ui setting`
doesn't persist creds (binary only). Server-side e2e verified; real RF-client
test pending user. +index.md, +log.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-14 14:40:23 +03: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
8e3e5b4353 wiki(snolla-0.42.1): рецепт live-prod in-place bump + секции в 3 рунбука + index/log
Закрыт пропуск: тираж 0.42.1 не был зафиксирован в вике (таски emspb/labtools.pro
просили using-wiki).

- NEW concepts/snolla-live-prod-inplace-image-bump.md — переиспользуемый рецепт
  (build на VDS → throwaway-staging-acceptance С VDS → env-preserving Portainer PUT
  put-stack.js → live-smoke), встроен put-stack.js, гочи.
- UPDATE 3 рунбука секцией «0.42.1 in-place bump» (labtools.ru/emspb/labtools.pro)
  с образами/acceptance/rollback.
- FIX orphan: все 3 deploy-рунбука добавлены в index.md (не были каталогизированы).
- log.md: decision-запись.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 12:16:15 +03: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
685f273571 deploy(pilonuxt): cf2bba2 LIVE — forms-api + full @snollajs/snolla drop
ADR-0010: forms moved to @snollajs/forms-api, @snollajs/snolla dropped
entirely, core@0.1.1 (Buffer over btoa). Stack 16 → pilonuxt:cf2bba2.
Pre-deploy tree-check of .output/server/node_modules 4/4: 0x snolla,
0x btoa, exactly 1x data@0.9.1, core 0.1.1 + content-api 0.14 + forms-api
0.1.0. Smoke green: SSR /+/catalog 200, robots/yandex from DB (ADR-0009
no regress), form ?path=/checkout empty -> 422 JSON, /nope -> 404 (no
valid submitted). Smoke gotcha: 422 only with Accept: application/json.

Closes [deploy-pilonuxt-forms-api-drop-snolla].

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 23:01:25 +03:00
dca1bf77d9 deploy(pilonuxt): 40bb383 LIVE — staticPages + robots.txt from DB
Stack 16 redeployed to registry.kzntsv.site/pilonuxt:40bb383 (ADR-0009:
DB-backed staticPages + robots.txt). Build from monorepo with forced client
regen (rm src/generated + schema-gen 0.6 → getStaticPage/getRobotsTxt);
home push hit traefik-499 on .output layer (425MB) → save|ssh load + push
from VDS. Smoke acceptance 6/6 verified by body (robots full from DB w/
Yandex Clean-param + Sitemap, yandex/google verifications, /nope→404).

Closes [deploy-pilonuxt-static-pages-robots].

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 12:05:27 +03:00
c3e845831d wiki(books-vds): document public bookva-db endpoint :33306
bookva MariaDB is published at 89.253.255.133:33306 (0.0.0.0:33306->3306,
port 33306 since 3306 is slovo books-db). Added public DB-endpoints block
to § Доступ (slovo + bookva), noted mongo/ES stay internal, and a
.Ports-vs-.Networks reminder. Closes the port wiki-drift in follow-up #2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 11:54:50 +03:00
fb47d5deb2 wiki(vdsina): document Amsterdam Outline+3x-UI VDS 46.151.25.64
New entity + inventory source for previously-undocumented family VPN.
Secrets stored separately in pass vdsina-outline/full-env.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 15:54:36 +03:00
b7f2edc5bd docs(wiki): registryGc real-run outcome + named-tag-loss lesson
Первый боевой registryGc dryRun:false (books master-289c660, под добро юзера):
63 DELETE, 0 ошибок, 0x405 -> REGISTRY_STORAGE_DELETE_ENABLED=true подтверждён
живьём; 61 dangling + 2 datable снесены, реестр почищен.

Урок: master у books-api/books-ops-mcp был dangling (не пересобирались ~3нед)
-> логика drop-dangling снесла named-тег -> :master 404. Outage нет (контейнеры
на локальных образах), но redeploy упрётся. Политика: НЕ удалять named-теги
master/latest даже dangling (protectRe -> +master/latest); проверить keep/drop
на digest-коллизию (books-api keep=1 но 0 не-buildcache осталось).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 13:21:37 +03:00
93b4ef1d13 docs(wiki): dangling image-index finding — registry full of tag-tombstones
Перепрогон registryGc dryRun на descent-фиксе (master-dcd7c91) вскрыл 2-й
root-cause: реестр засорён dangling OCI image-индексами — тег жив, но его
платформенный sub-manifest отдаёт MANIFEST_UNKNOWN (вычищен прежним host-side
registry garbage-collect, не следящим index->child для multi-arch).
books-web: 19 тегов -> 3 датируемых, 16 dangling.

date-based GC защищает dangling как null-dated -> никогда не удаляет, хотя они
и есть мусор (логика задом наперёд). Рекомендация books: различать
transient-error (protect) vs MANIFEST_UNKNOWN (eligible for delete).
freedBytes от dangling ~0 (слои уже вычищены).

+registry-oci-image-index-gc.md (раздел) +index.md +log.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:51:28 +03:00
85b13ae6a4 docs(wiki): OCI image-index GC gotcha + bind-mount config-shadow lesson
Следствие закрытия [books-task-runner-registry-auth-cred].

concepts/registry-oci-image-index-gc.md (new): books-* образы в registry =
OCI image-index (buildx), top-level .config=null, дата .created в платформенном
sub-manifest. Наивный GC по top-level дате → null у всех → null-dated группы
защищаются → drop=0 всегда (keepLastN не применяется). Правила: Accept со
всеми media-types, дата из sub, DELETE по index-digest не sub. Зафиксировано
на books registryGc dryRun (deleted=0 при 14 tags) + манифест-dump books-web.

concepts/bindmount-config-edit-preserve-mode.md: дополнен гочей про
bind-mount shadow (config образа затенён целиком → полная секция, не дельта)
+ worked example task-runner (mode не слетел, постмортем сработал).

+index.md (2 строки) +log.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:31:41 +03:00
28de8e60e0 docs(wiki): registry.kzntsv.site auth-model concept + bind-mount config-mode postmortem
- concepts/registry-kzntsv-auth-model.md (new): standalone registry:2 + htpasswd
  Basic, binary access, NOT Gitea-packages; how to add htpasswd users (hot-reload),
  GC via v2 DELETE + host garbage-collect; users vitya + books-ci.
- concepts/bindmount-config-edit-preserve-mode.md (new): mktemp+mv drops file mode
  644->600 -> non-root container (uid 1000) EACCES crash-loop; chmod --reference.
  Worked example: books-job-scheduler prod-down incident 2026-06-18.
- vds-kzntsv entity registry row links the auth-model concept.
- index.md + log.md updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 11:28:58 +03:00
5ffca96934 docs(wiki): runbook stostayer-web deploy + park complaint-form task
Ingest .wiki/concepts/stostayer-web-deploy-runbook.md — канал деплоя легаси
web (build offline → push docker.stostayer.ru → Portainer-стек 16 через
container-IP API с хоста, мимо Angie BA) + rollback + гоча VPN-IP бан
хостером при retry-push-шторме.

БЛОКЕР задокументирован: легаси packages/web (node16/CJS/Nuxt2) не
пересобрать ни с какого свежего дерева — 5 ESM-ставших депов (@snollajs/snolla,
@snollajs/content-api, @stostayer/api, @stostayer/data ×2). 0.3.18 заморожен.
Фикс формы (120bc07) едет с web4-cutover.

Таска stostayer-web-complaint-form-deploy → 🔵 park (blocker=web4-cutover);
попытка деплоя 0.3.19 откатана на 0.3.18, сайт восстановлен. Дохлый 0.3.19
оставлен в registry по решению vitya.

+ index.md, log.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:21:56 +03:00
c677b23f81 docs(wiki): уточнён live-state stostayer IIS на windows-recovery-host
Добавлена таблица порт->conn-string->БД для двух оставшихся IIS-сайтов
(stostayer :8090 -> внешний прод www.stostayer.ru; stostayer.old :8091
-> наш mssql.kzntsv.site), путь админок /admin, live-проверка 2026-06-17.
Пофикшена стейловая строка stostayer.old conn (localhost -> mssql.kzntsv.site).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 13:13:37 +03:00
cad9f02c0e feat(deploy): pilonuxt 19a4a84 — structured-data (description/brand/return-policy) live; close redeploy-pilonuxt-gsc-structured-data
Перекат stack 16 на registry.kzntsv.site/pilonuxt:19a4a84 (build на
workstation, push, Portainer PUT pullImage). Smoke на проде через
--resolve: description непустой, brand=Пилорама 98, offers→
hasMerchantReturnPolicy/returnPolicyCategory=MerchantReturnNotPermitted,
прежние offers-поля целы, регрессий нет. Отчёт в inbox pilonuxt.

Wiki ingest: portainer-stack-management-vds — раздел Stack redeploy
(новый тег) + gotcha #9 (PS 5.1 Invoke-RestMethod декодит /file как
ISO-8859-1 → mojibake кириллицы → PUT падает YAML; fix байты+UTF8) +
#10 (пустой env). index/log обновлены.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 10:22:30 +03:00
7ebab0a79d docs(wiki): add S3-access lookup block for client apps (books-vds MinIO)
Запрос snolla (raw-stream content-api) потребовал MinIO endpoint+креды;
ответ был выводим из вики, но не собран одним куском. Добавлен раздел
«S3 access для клиентских приложений» в minio-imgproxy-on-vds.md:
endpoint (https://minio.kzntsv.site / сырой :9000 / inter minio:9000),
root accessKey + pass-ссылка на secret, форма ключа, ssl/region/pathStyle.
Следующий такой вопрос — grep по вики, без SSH на сервер.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:49:13 +03:00
f04426617c feat(galleries): migrate pilorama98 gallery originals Local-disk → S3
snolla galleries 404 (imgproxy "Source unreachable"): legacy storageClient
"galleries" = MoreThenCms Local storage class (App_Data\galleries\<siteId>),
never in S3 — products were migrated, galleries weren't. Path A (user pick):
new bucket `galleries`, 301 pilorama98 originals (77 MiB) rclone'd from RUVDS
IIS → s3://galleries/37e6…/<guid>.jpg verbatim. snolla code unchanged
(storageClient=bucket is the working convention). imgproxy smoke from
books-vds: real obj 200 image/webp, fake guid 404. Other sites unmigrated
(scope). Inbox sent to victor/snolla.

- close [migrate-gallery-originals-to-s3] (scope pilorama98)
- NEW .wiki concept galleries-storage-class-local-not-s3
- fix stale minio-imgproxy-on-vds (pipeline on books-vds since 2026-06-08)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 14:50:16 +03:00
eb21b282d8 wiki(ingest): concepts/yarn-npm-minimal-age-gate — YN0016 на свежих версиях
Yarn >=4.16 npmMinimalAgeGate (default 1d) карантинит версии <24ч на
КЛИЕНТЕ — независимый от auth gate #2 (после 401). Серверного карантина
в verdaccio нет; первичная гипотеза опровергнута пруфом из yarn.js.
Глобальный config (per-scope не работает), fix npmMinimalAgeGate:0.
Backlink из verdaccio-token-lifecycle + index/log.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 18:21:41 +03:00
15c273c153 wiki(ingest): concepts/verdaccio-restore-packument-desync — 409 postmortem
disaster-restore вернул тарболлы но древний/пустой packument →
publish свежей версии EEXISTS 409. Fix: снять только коллизирующий
целевой .tgz (backup first), republish; НЕ rm -rf каталог.
Применено к @snollajs/{data,mailer,numbering,content-api}.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:10:01 +03:00
7f998d5222 wiki(ingest): concepts/verdaccio-token-lifecycle — restart trap + JWT fix
Постмортем утреннего фикса verdaccio: ephemeral secret (нет `secret:` в
конфиге) → инвалидация всех токенов при каждом рестарте; max_users:-1 +
pnpm login → 409; web-UI login как обход; JWT config fix (пинуем secret,
api.jwt 900d). Recipe рефреша для yarn classic vs berry.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 16:28:31 +03:00
e2338b6fdd wiki(lint): close all 10 lint issues + delete windows-host backup task
- deleted .tasks/windows-host-fallback-backup-daily.md (MSSQL removed on decommission 2026-06-08)
- recovery-architecture-snapshot.md: marked ИСТОРИЧЕСКАЯ ЗАПИСЬ; removed 3 broken [[wiki-links]] (cms-server-port-leak-fix, cms-admin-assets-root-folder-seed, webconfig-password-xml-escape)
- snolla-recovery-vm.md: marked УДАЛЕНА 2026-06-08
- ruvds-iis-host.md: struck 2 resolved risks (imgproxy SPOF, LE renewal); cross-ref winacme
- future-resilient-architecture-goals.md: dead task link → plain text
- mssql-on-vds.md: frontmatter fix; Backup TODO section replaced with implemented block (Express COPY_ONLY, sqlcmd, bind-mount pattern)
- vds-kzntsv.md: added MSSQL row to software stack table
- log.md: update entries for lint + mssql backup implementation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 08:18:19 +03:00
4fd8288e8c meta(wiki): log += ingest concepts/mcp-init-resilience 2026-06-10 10:58:10 +00:00
1eb58aa940 task(decommission): windows-recovery-host cleanup complete (C: 62->275GB)
Elevated finale ran clean: stostayer.old repointed to mssql.kzntsv.site
(orphaned snolla user fixed agent-side as sa), smoke 200; removed snolla
IIS site + C:\sites\snolla + local MSSQL. Both kept sites verified 200
(stostayer :8090 external DB, stostayer.old :8091 on VDS).

Updated entities/windows-recovery-host with post-decommission state
(old hosting sections marked historical); image-pipeline SPOF retired.
Remaining: WSL vhdx compact (~176GB, outside session).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:15:12 +03:00