4.6 KiB
4.6 KiB
_last_updated_, session_id
| _last_updated_ | session_id |
|---|---|
| 2026-05-28T20:30:00+03:00 | 2026-05-28-restore-es-indices-books-vds-closure |
Next session handoff
Сессия: восстановили 3 ES индекса на canonical (books VDS stack 33) через snapshot restore + добавили 2 preventive control'а против повтора. Таска 🟢 closed. Wiki concept + closure note записаны.
Recent commits
48a5cf39tasks(restore-es-indices-books-vds): closed — snapshot restore + 2 preventive controlse9b0a9eddocs(tasks): restore-elasticsearch-indices-books-vds — заведение таски на prod outage068f7b26docs(iis-migration): owner DNS-flip instructions (labtools, tandemmebel)11554d45wiki(ingest): vds-kzntsv network-stack mismatch RCA + ifupdown anti-patterndacc39a1tasks(modulair-rag-vds-redeploy): follow-ups #1-3 done
Что закрыли в эту сессию
- Restore (46 сек):
POST /_snapshot/kreknin/daily-2026-05-25/_restoreсindices=epz,products,artmone. Counts == source (820604/105922/2621), green. - RCA: 5 индексов удалены через ES API
DELETE _all2026-05-26 10:21 UTC, 1ч 11мин после создания bookva-es. Best guess — оператор в cutover-prep попал на canonical вместо internal-only bookva-es:9200. Caller identity unrecoverable (audit/accessLog отсутствовали). - Control #1:
action.destructive_requires_name=trueenv var на stack 33 — wildcard/_allDELETE теперь 400. By-name работает. Verified. - Control #2: Traefik JSON accessLog в
/letsencrypt/access.log— будущие DELETE с IP/user/method/path в логе. Restart traefik сделан, log файл генерится. - Wiki:
concepts/es-destructive-delete-incident-2026-05-26.md(recovery runbook + preventive controls + cross-refs). Index + log обновлены.
Open треки
| Трек | Готовность | Entry-point |
|---|---|---|
books-bookva-user-whitelist-gathering |
⚪ ready — gathering от учредителя Bookva | .tasks/STATUS.md line ~221 |
stateful-split-volume-copy |
⚪ ready — maintenance window 5–10 мин | .tasks/STATUS.md line ~97 |
infra-inventory |
⚪ ready — two-tier (public + admin) | .tasks/STATUS.md line ~150 |
books-stateful-split-execution |
🔵 blocked — deps в victor/books |
.tasks/STATUS.md line ~250 |
books-vds-bookva-bootstrap |
🔵 blocked — Bookva billing + provision | .tasks/STATUS.md line ~161 |
books-dns-cutover-bookva |
🔵 blocked — после books-vds-bookva-bootstrap |
.tasks/STATUS.md line ~191 |
Активных 🔴 / 🟡 нет.
Спроси user'а
- Logrotate для
access.log(~30–50 MB/day, disk free 63G): отдельная micro-task сейчас, или отложить до первого ощутимого роста? Записан как follow-up в task closure + wiki concept, но не оформлен. pass books-vds/full-envcomment outdated — в нём ещё написано «NOT Portainer-managed: elasticsearch, mongo, minio, books-db…». На самом деле migration 25.05 (books-vds-stacks-to-portainer) их мигрировала. Поправить при следующем pass-edit. Сейчас?stack33-put-2026-05-28.jsonв.scratch/— он gitignore'нут (transient drop). Если хочется keep как audit artefact — нужно отдельно архивировать.
Не делать (preemptive guards)
- Не снимать
action.destructive_requires_name=trueна canonical ES. Если ОЧЕНЬ нужен wildcard DELETE — сначала остановиться и подумать на каком endpoint. - Не использовать
ssh + docker compose up -dна VDS для управления Portainer stacks — anti-pattern из CLAUDE.md. Только Portainer API / UI (как делали PUT stack 33 в эту сессию). - Никогда не делиться
elasticsearch.kzntsv.siteмежду slovo и bookva. Bookva-es сейчас internal-only через docker network — это правильно. Если когда-нибудь нужен external — отдельный hostname. - branch ahead by 1 commit от origin/master — push без explicit user grant (project-discipline Rule 4). Сейчас в working tree 2 unpushed commit'а:
e9b0a9ed+48a5cf39.
Memory updates за сессию
(нет на этом раунде — ничего не сохраняли в ~/.claude/projects/.../memory/)