Новый скрипт 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>
Добавил ## Навигация секции с [[wikilink]] в README.md каждой папки и
в корневой README. Это убирает 90 orphan_files (180 pts).
Score: 463 → 15 (осталось только 3 duplicate_basenames × 5).
Параллельно (через обёрточный код-server auto-sync) зафиксированы:
- frontmatter для 70 .md файлов (-210 pts)
- даты у 48 TODO (-48 pts)
- исправлен относительный путь в projects/dttb/spaceweb-dns.md (-10 pts)
6 категорий штрафов со взвешенной суммой:
- broken_wikilinks (×10) — [[foo]] не ведёт никуда
- broken_paths (×10) — [text](./foo.md) не существует
- missing_frontmatter (×3) — .md без frontmatter-заголовка
- orphan_files (×2) — нет входящих wikilinks и не в служебных папках
- undated_todos (×1) — "- [ ]" без YYYY-MM-DD
- duplicate_basenames (×5) — одинаковое имя в разных папках
Baseline сегодня: score=493 (158 файлов).
Выход: audit/DATE-health.md (человекочит) + audit/health-latest.json (для agent-loop).
False-positives зачинены:
- wikilinks внутри backticks/fenced code игнорим
- ../ и ./ пути резолвятся от файла-источника
- CLAUDE.md/README.md не требуют frontmatter
- kb-audit-npm.py: NPM API → сверка с npm-proxy-hosts.md
детектит новые/удалённые hosts + смену backend/SSL
- kb-audit-creds.py: HEAD/GET-ping всех URL из credentials.md
с fallback на GET при 501/405, skip embedded-creds URLs
- kb-audit-dns.py: dig @8.8.8.8 и @10.0.0.1 для всех доменов NPM
детектит NXDOMAIN + split-horizon
Первый прогон нашёл:
- NPM: 2 новых host (router/vpn.dttb.ru), 2 изменения (bitrix24 backend, git SSL)
- Creds: все 12 URL reachable ✓
- DNS: itilegent.ru не резолвится (публичные записи протухли)
- kb-audit.py: сравнивает живой pct list/qm list с proxmox-inventory.md
→ audit/YYYY-MM-DD-drift.md (только факты, без LLM)
- kb-audit-propose.sh: прогоняет drift через Opus (Max OAuth на code-server)
→ audit/YYYY-MM-DD-proposed.md (patch на ревью)
- scripts/README.md: архитектура и cron-конфиг
Рекомендуемый cron на code-server: 0 6 * * 0 (воскр 06:00)
Правки не применяются автоматом — только ревью + ручной git apply.