Один артефакт-агрегатор: метрики до/после, грабли, отложенное, ссылки
на все промежуточные decisions/snippets. Чтобы не прыгать по разным
файлам — единая точка входа для повторного чтения.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Новый скрипт scripts/kb-objects-audit.py — еженедельный health-check vault'а:
1. Каждый projects/<dir>/README.md имеет валидный frontmatter (type/status/aliases)
2. Каждый онлайн-netbird-пир привязан к проекту через aliases или собственную карточку
3. Битые wiki-ссылки [[...]] не указывают в небытие
Output: audit/YYYY-MM-DD-objects-audit.md со score (меньше = лучше).
Первый запуск 2026-05-06: score=84
- 12/12 проектов с frontmatter ✓
- 3 online orphan-пира (DESKTOP-2IOQS54 Saransk, DESKTOP-AGBMLPN Helsinki, DESKTOP-HL0BB05 Lipetsk)
- 26 битых wiki-ссылок выявлено
Phase 6: dreaming включён (cron 0 3 * * *), recall promote'нул 17/39, weekly cron на promote.
Phase 8: на 137 — minScore=0.4 в memorySearch.query, IDENTITY.md разводит двух Максимок,
INFRASTRUCTURE.md переписан как навигатор по vault'у (не дубль).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Существующие проекты получили frontmatter с aliases для FTS / objects-map:
niikn — Cloud-NIIKN New niikn.com, pve-niikn, Kripto-ARM, M.Maul
dttb — Work Server dttb, code-server, rustdeskserver, MacBook-Pro, ...
glavtorg, krasnogorsk, zelenograd — добавлен frontmatter с aliases
Создано 6 новых README:
projects/znamenskoye/README.md — был отсутствующий index 3-х объектов
projects/mmfb/README.md — был отсутствующий index ММФБ + LionART
projects/sergey/README.md — stub OpenWrt_Sergey (Одинцово)
projects/benilux/README.md — stub OpenWrt Benilux (Истра)
projects/vishnevyy-sad/README.md — stub Константин (Москва)
projects/openwrt-4/README.md — stub анонимный OpenWrt_4
Обновлён scripts/kb-objects-map.py: exact-match вместо substring (избегает FP
вроде alias 'cloud' ⊂ 'Cloud-NIIKN New niikn.com'). Aliases теперь должны
содержать полные имена пиров как в netbird-inventory.
Метрика: с 38 orphan-пиров до 14. Остаток — реально неклассифицированные
клиентские машины без явной привязки к проекту (Денис Тихая, DESKTOP-2IOQS54
и др.) — задача для отдельного шага обогащения.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Авто-генератор реестра: парсит netbird-inventory + frontmatter каждого проекта,
выводит JSON для бота и человекочитаемый index с wiki-ссылками.
Пока 16 проектов / 38 orphan-пиров без своих карточек — выявленные дыры станут
input для Фазы 4 (stub-генератора). Скрипт идемпотентный, без deps (pure stdlib),
запуск: cd ~/knowledge-base && python3 scripts/kb-objects-map.py
Парсер обрабатывает offline-таблицу netbird (другой порядок колонок), normalize
ye→e уравнивает Знаменское/Znamenskoe. Source of truth — frontmatter каждого
проекта; добавление aliases/owner/region там сразу подхватится при следующем run.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Перенесены 18 файлов 2026-04-* (drift, creds, dns, npm, health, proposed) в audit/archive/.
В audit/ остались только свежие 2026-05-03-* + health-latest.json.
Цель — снизить шум в FTS Максимки. В openclaw 2026.5.2 нет excludePaths
для memorySearch, поэтому файлы продолжают индексироваться, но в подкаталоге
их легче чистить вручную и видно структуру.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Развёрнут push-webhook от Gitea на kb-pull-webhook.service на LXC 137 + auto-reindex FTS в kb-pull.sh после нового HEAD. Грабли: gitea webhook.ALLOWED_HOST_LIST по дефолту режет private IP; flock -n теряет двойные push, заменён на -w 180.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Закрывает причину #1 путаницы Максимки на запросах вида "OpenWRT Липки": слово "Липки" во всём vault встречалось только одной строкой в netbird-inventory, FTS вытаскивал НИИКН по статистике слова "OpenWRT".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- decisions/2026-05-05-mac-dictation-groq-hammerspoon.md: полный план,
грабли с раскладкой, fallback на whisper-cpp, восстановление на новом Mac
- notes/ru-geoblocked-services.md: реестр CDN с RU-блоком
(cdn.spokenly, dl.wisprflow и пр.) + принципы обхода
- snippets/mac-dictation/: рабочая версия скриптов и init.lua
Триггер — одиночный Fn, Groq cloud first → tiny local fallback,
вставка через hs.eventtap.event keycode 9 (минует ru-keymap warnings).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
podkop user_domains на 192.168.1.50 — 5 доменов (notebooklm.google[.com],
generativelanguage.googleapis.com, aistudio.google.com, labs.google).
Клиенты по DHCP ходят на dnsmasq 192.168.1.50, FakeIP-маршрут
198.18.0.0/15→OpenWrt уже на MikroTik — для Оксаны и всего офиса
ничего на ПК настраивать не надо.
Аудит перед запуском в прод. Найдены и исправлены critical и medium issues:
Critical (fixed):
- File permissions 644 → 600/640 для id_ed25519, БД, config.yaml
- Нет logrotate (диск 2GB зальётся) → /etc/logrotate.d/rustdesk
- Нет авто-бэкапа → daily cron 03:00 в /root/rustdesk-backups/
Medium (fixed):
- Brute-force на /api/admin/login → NPM rate-limit 5r/m
Medium (deferred):
- NC share без пароля (NC сейчас down — отдельный task)
- Security headers не наследуются в location / (NPM template limitation)
Документация:
- decisions/2026-04-30-rustdesk-pre-prod-audit.md — полный отчёт
- projects/dttb/rustdesk-runbook.md — операционный runbook (recovery,
troubleshooting, onboarding, updates)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- snippets/clients/sergey-znamenskoye-happ-setup.md: персональная инструкция с готовым сообщением и блоком про US Apple ID hbuggle819
- snippets/assets/vpn-finland-5870-sergey-znamenskoye-20260429.png: QR vless-ссылки
- projects/dttb/vpn-clients.md: запись клиента №2 (UUID 4798936b)
NPM stack пересоздан с публикацией портов 21115-21119. Compose-файл теперь
лежит на host /data/compose/2/docker-compose.yml (Portainer хранил только
в своём volume — теперь синхронизированы). Custom stream.conf с TLS
termination для 21118/21119 в /data/compose/2/data/nginx/custom/.
wss://remot.dttb.ru:21118/ws/id и /ws/relay отвечают 101 Switching Protocols.
WebClient доходит до hbbr с relay request, но peer должен быть online +
залогинен в API чтобы соединение установилось.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>