kb-audit: уровень 3 — auto-apply safe drift fixes (karpathy-style)

- kb_audit_helpers.py — общие функции parse_live/inventory/deleted
- kb-audit-apply.py — применяет только structural факт-правки:
  * new VMID → добавить в "🔴 Остановленные" (только для stopped)
  * missing VMID → переместить в "🗑️ Удалённые" с датой
- Коммитит как kb-audit-bot <kb-audit@dttb.ru> — фильтруемо в git log
- Safety: live<5 хостов → abort
- Не трогает описания/IP/назначения — только структурные поля из pct list

Cron обновлён: audit → apply → propose (остаток для ручного ревью)
This commit is contained in:
dttb
2026-04-18 00:42:49 +03:00
parent f90eb337d6
commit a379b626af
4 changed files with 262 additions and 85 deletions

View File

@@ -22,25 +22,40 @@ python3 scripts/kb-audit.py
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 <kb-audit@dttb.ru>` — легко фильтровать в git log
- Трогает **только** `proxmox-inventory.md`, никогда описания/назначения
Запуск:
```bash
python3 scripts/kb-audit-apply.py
```
## Еженедельный cron (code-server LXC 132)
```cron
# воскресенье 06:00 — drift audit + Opus предложения
0 6 * * 0 /usr/bin/python3 /root/knowledge-base/scripts/kb-audit.py && /bin/bash /root/knowledge-base/scripts/kb-audit-propose.sh
# воскресенье 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
kb-audit.py — фактовый diff → audit/YYYY-MM-DD-drift.md
audit/YYYY-MM-DD-drift.md (коммитится автоматом kb-autosync.sh)
kb-audit-apply.py — автоматически применяет safe-правки (новые VMID, missing → 🗑️)
↓ коммитит как kb-audit-bot
kb-audit-propose.sh — Opus предлагает patch
kb-audit-propose.sh — Opus читает drift + свежий inventory, предлагает что осталось
↓ → audit/YYYY-MM-DD-proposed.md
audit/YYYY-MM-DD-proposed.md (коммитится)
ты ревьюишь оставшееся (описания, IP, назначения), применяешь руками
ты ревьюишь, применяешь руками
коммит inventory, sync везде
коммит → sync везде (через kb-autosync + File Provider + Nextcloud)
```