Files

8.8 KiB
Executable File
Raw Permalink Blame History

План: вывод Zulip из эксплуатации (decommission)

Создан: 2026-09-29

Цель

Снести Zulip-стек на Mac (Colima Docker), сохранив историю переписки. Транспорт Hermes уже переехал на Mattermost — Zulip держится только ради истории.

Состояние

Этап Статус
1. Выгрузка истории в SQLite ✅ сделано 2026-09-29
2. Верификация целостности ✅ сделано
3. Правка ссылок на Zulip DB в скиллах/SOUL ✅ сделано 2026-09-29
4. Снос стека ⛔ не начато — ждёт команды Alex

Артефакт этапа 1: ~/Documents/zulip_message_history.sqlite (81.9 MB на диске, 134 734 сообщения) → инструкция по поиску в tech/zulip-message-history Артефакт этапа 3: скилл message-history-search + 21 переписанный файл → см. §«Этап 3 — что сделано» ниже

ℹ️ Параллельная задача 2026-09-29 (ЗАКРЫТА): «отключи автогенерацию скиллов» — разбор механизма фонового review (skills.creation_nudge_interval, review.allowed_toolsets) в tech/hermes-self-improvement-review, §«Как ВЫКЛЮЧИТЬ». Внесено: creation_nudge_interval: 15 → 0 в ~/.hermes/hermes-whale/config.yaml, коммит d2e1586. Вариант «+ убрать skills из review.allowed_toolsets» Alex не выбрал — память продолжает обновляться фоновым review. На этап 4 (снос) не влияет.

Решение: формат истории

Рассматривались три варианта:

Вариант Плюсы Минусы Итог
pg_dump (custom format) полный бэкап, восстановим одной командой нечитаем без psql; тянет за собой весь Postgres ❌ отклонён
Экспорт в markdown-файлы по тредам читаемо в Obsidian, grep-абельно 197 файлов, ломает структуру при правках, нет поиска по тексту ❌ отклонён
SQLite + FTS5 один файл, структура тредов через FK, полнотекстовый поиск нужен sqlite3 CLI ✅ выбран

Явное указание Alex: «никаких вложений и меты. только история переписки». Поэтому pg_dump, volume zulip_zulip-data, аплоады и аватары в выгрузку не попали.

Этап 3 — что сделано (2026-09-29)

Изначально предлагались варианты A/B/C (переименовать скилл vs переписать тело). Alex решил иначе — жёстче: снести 3 zulip-скилла целиком, из USER.md удалить, в SOUL и остальных скиллах переписать.

Снесено (3 скилла)

Скилл Роль Поглощён в
zulip-db-forensics запросы к Zulip Postgres, forensic-разбор message-history-search
zulip-thread-handoff перехват треда у другого агента message-history-search
zulip-bot-routing архитектура роутера + диагностика ботов message-history-search

Удаление через skill_manage(action='delete', absorbed_into='message-history-search').

Создано (1 скилл)

~/.hermes/skills/note-taking/message-history-search/SKILL.md — 7 744 б. Схема, 5 готовых запросов, синтаксис FTS5, лимит покрытия, питфоллы.

Переписано (21 файл)

Файл Что заменено
~/.hermes/SOUL.md RULE 5 — ссылка на zulip-db-forensics → SQLite + message-history-search
~/.hermes/hermes-whale/SOUL.md блок про Zulip DB → путь к SQLite + запрос
hermes-whale/memories/USER.md «ищи в базе → Zulip psql» → «→ sqlite3 … СРАЗУ»
project-progress-audit 4 места: related_skills, Source 2, pitfalls
eagle-dashboard восстановление треда после --replace
systematic-debugging «та же проблема» → поиск в архиве
claude-cli-proxy-diagnostics (+ ref) 3 psql → sender из messages
executor-autonomous-tick запрос истории executor'а
vault-profile-onboarding Step 4 — восстановление из истории
claude-design «Check Zulip DB» → архив
personal-os-daily-brief, media-stack-reconciliation-audit, htpc-steam-shortcuts, truenas-administration/references/zfs-panic-recovery, .archive/truenas-zfs-panic-recovery, remote-host-administration related_skills + ссылки
systematic-debugging/references/postgres-fk-cascade-data-loss «читай с конца» → архив

🔴 Питфолл: ~/.hermes/SOUL.md ≠ ~/.hermes/hermes-whale/SOUL.md

skills/ — это симлинк (hermes-whale/skills → ~/.hermes/skills), поэтому правка скилла видна по обоим путям. А SOUL.md — два разных файла:

Путь Размер Дата
~/.hermes/SOUL.md 9 732 б 17 мая — RULE 5, «Core Rules»
~/.hermes/hermes-whale/SOUL.md 8 244 б правится этой сессией — ADHD-секция

Правка только одного оставила бы RULE 5 битым. Всегда править оба. Проверка: ls -la — если размеры/даты разные, файлы независимы.

Оставлено как есть (осознанно)

docker-balda-service/references/balda-env-recovery.md и zulip-router-rules.md — там psql читает живые API-ключи ботов, это не история. Добавлена шапка-предупреждение о декоммишене, запросы не тронуты. Если Zulip снесут — файлы придётся переписать.

Бэкап

~/.hermes/hermes-whale/backups/20260929-zulip-to-sqlite/ — 464 K, 51 файл (SOUL.md, USER.md, 3 снесённых скилла целиком, все правимые скиллы).

Шаг 4 — снос (выполнять ПОСЛЕ шага 3)

cd ~/Developer/zulip
docker compose down
docker volume rm zulip_zulip-data zulip_zulip-pgdata zulip_zulip-rabbitmq zulip_zulip-redis
docker rmi zulip/docker-zulip:11.6-0

🔴 Порядок важен: сначала зависимости

  1. zulip-router (~/Developer/zulip-router/, порт 8090) — поллит Zulip Events API. Снести/остановить до Zulip, иначе словит restart-loop на мёртвом API.
  2. Hermes platforms: zulip в ~/.hermes/config.yaml — уже не используется (транспорт Mattermost), но платформа в конфиге останется висеть. Убрать или выключить.
  3. Bot-роутинг (Валера/Клавдий/Eagle/Кит webhook host.docker.internal:8644-8645) — уходит вместе с Zulip. Balda-боты остаются без транспорта.

Что освободится

Ресурс Объём
Образ zulip/docker-zulip:11.6-0 3.84 GB
Volume zulip_zulip-pgdata 503 MB (на диске)
Volume zulip_zulip-data 38.1 MB
Контейнеры (5 шт) ~260 MB

Проверка перед сносом (обязательно)

  • sqlite3 ~/Documents/zulip_message_history.sqlite "PRAGMA integrity_check;" → ok
  • count(*) из messages = 134 734
  • FTS-запрос по известному слову возвращает результаты
  • Файл продублирован вне Mac (Time Machine / Kraken / NAS) — не сделано, Alex не подтвердил необходимость

Связанные документы