[2026-09-29] eagle: personal/index.md personal/plans/zulip-decommission.md personal/projects/zulip-router.md personal/tech/docker-mac-disk-issues.md personal/tech/zulip-message-history.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-29 12:51:07 +06:00
1 parent e75cf79e79
commit 62f19eeecb
5 files changed
+342

No files matched your search

+101
View File
@@ -0,0 +1,101 @@
# План: вывод Zulip из эксплуатации (decommission)
_Создан: 2026-09-29_
## Цель
Снести Zulip-стек на Mac (Colima Docker), **сохранив историю переписки**.
Транспорт Hermes уже переехал на Mattermost — Zulip держится только ради истории.
## Состояние
| Этап | Статус |
|---|---|
| 1. Выгрузка истории в SQLite | ✅ сделано 2026-09-29 |
| 2. Верификация целостности | ✅ сделано |
| 3. Правка ссылок на Zulip DB в скиллах/SOUL | ⏳ план согласован, ждёт выбора варианта |
| 4. Снос стека | ⛔ не начато |
**Артефакт этапа 1:** `~/Documents/zulip_message_history.sqlite` (78.1 MB, 134 734 сообщения)
→ инструкция по поиску в [[tech/zulip-message-history]]
## Решение: формат истории
Рассматривались три варианта:
| Вариант | Плюсы | Минусы | Итог |
|---|---|---|---|
| `pg_dump` (custom format) | полный бэкап, восстановим одной командой | нечитаем без psql; тянет за собой весь Postgres | ❌ отклонён |
| Экспорт в markdown-файлы по тредам | читаемо в Obsidian, grep-абельно | 197 файлов, ломает структуру при правках, нет поиска по тексту | ❌ отклонён |
| **SQLite + FTS5** | один файл, структура тредов через FK, полнотекстовый поиск | нужен `sqlite3` CLI | ✅ **выбран** |
**Явное указание Alex:** «никаких вложений и меты. только история переписки».
Поэтому pg_dump, volume `zulip_zulip-data`, аплоады и аватары в выгрузку не попали.
## Открытый вопрос (шаг 3) — правка ссылок на Zulip DB
Найдено **7 групп файлов**, ссылающихся на `zulip-db-forensics` / `psql` к Zulip.
После сноса эти инструкции станут нерабочими.
| # | Файл | Ссылок |
|---|---|---|
| 1 | `~/.hermes/hermes-whale/SOUL.md:36` | 1 |
| 2 | `~/.hermes/hermes-whale/memories/USER.md` | 1 |
| 3 | `skills/software-development/zulip-db-forensics/SKILL.md` | основной |
| 4 | `skills/software-development/zulip-thread-handoff/SKILL.md` | 4 |
| 5 | `skills/software-development/zulip-bot-routing/SKILL.md` | 6 |
| 6 | `skills/software-development/project-progress-audit/SKILL.md` | 3 |
| 7 | `eagle-dashboard`, `systematic-debugging`, `personal-os-daily-brief`, `zfs-panic-recovery`, `htpc-steam-shortcuts` | по 1 |
**Предложенные варианты:**
- **A (чисто)** — переименовать скилл `zulip-db-forensics` → `message-history-search`,
перевести все 7 групп на SQLite. ~10 файлов.
- **B (минимально)** — только `SOUL.md` + `USER.md` + блок «ИСТОЧНИК = SQLite» в скилл. 3 файла.
- **C (гибрид, рекомендован)** — `SOUL.md` + `USER.md` + переписать тело
`zulip-db-forensics/SKILL.md` на SQLite, **имя скилла не менять** (8 входящих ссылок
переименование сломает без выгоды), в остальных файлах заменить только psql-команды.
**Решение не принято** — ждёт ответа Alex.
## Шаг 4 — снос (выполнять ПОСЛЕ шага 3)
```bash
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 не подтвердил необходимость
## Связанные документы
- [[tech/zulip-message-history]] — SQLite с историей и инструкция по поиску
- [[projects/zulip-router]] — архитектура роутера, конфиг ботов
- [[tech/hermes-whale-mattermost-transport]] — текущий транспорт Hermes
- [[tech/docker-mac-disk-issues]] — контекст: почему Zulip тормозил