# scripts/ — инфра-скрипты vault ## kb-audit.py Факт-детектор drift-а: сравнивает живой `pct list`/`qm list` с `projects/dttb/proxmox-inventory.md`. Пишет отчёт в `audit/YYYY-MM-DD-drift.md`. **Без LLM** — только факты. Галлюцинаций быть не может. Запуск: ```bash python3 scripts/kb-audit.py ``` ## kb-audit-propose.sh Запускается **после** kb-audit.py. Берёт свежий drift + текущий inventory → отправляет в `claude -p` (Opus 4.7 через Max). Получает предложенные правки → `audit/YYYY-MM-DD-proposed.md`. **Правки не применяются автоматом.** Ревью — ты, `git apply` — вручную. Запуск: ```bash bash scripts/kb-audit-propose.sh ``` ## kb-audit-apply.py (karpathy-style уровень 3) Автоматически применяет **безопасные** правки в `proxmox-inventory.md`: - Новый LXC/VM в Proxmox → добавляется строка в таблицу «Остановленные» (только для stopped — running требует ручной секции с деталями) - VMID отсутствует в pct/qm list → перемещается в секцию «🗑️ Удалённые» с сегодняшней датой **Гарды:** - Live-list < 5 хостов → abort (Proxmox возможно недоступен, не искалечим inventory) - Коммит с автором `kb-audit-bot ` — легко фильтровать в git log - Трогает **только** `proxmox-inventory.md`, никогда описания/назначения Запуск: ```bash python3 scripts/kb-audit-apply.py ``` ## Еженедельный cron (code-server LXC 132) ```cron # воскресенье 06:00 — drift audit → safe auto-apply → Opus предложения оставшегося 0 6 * * 0 /usr/bin/python3 /root/knowledge-base/scripts/kb-audit.py && /usr/bin/python3 /root/knowledge-base/scripts/kb-audit-apply.py; /bin/bash /root/knowledge-base/scripts/kb-audit-propose.sh ``` ## Архитектура ``` pct list / qm list (Proxmox) ↓ kb-audit.py — фактовый diff → audit/YYYY-MM-DD-drift.md ↓ kb-audit-apply.py — автоматически применяет safe-правки (новые VMID, missing → 🗑️) ↓ коммитит как kb-audit-bot ↓ kb-audit-propose.sh — Opus читает drift + свежий inventory, предлагает что осталось ↓ → audit/YYYY-MM-DD-proposed.md ↓ ты ревьюишь оставшееся (описания, IP, назначения), применяешь руками ↓ коммит → sync везде (через kb-autosync + File Provider + Nextcloud) ```