# Runbook: Audit Retention (Sofiia Console) Ціль: контролювати ріст SQLite (`sofiia.db`) через регулярний prune старих `audit_events`. ## Default policy - `SOFIIA_AUDIT_RETENTION_DAYS=90` (safe default) - Працює для `audit_events.ts < now - retention_days`. ## Dry-run (рекомендовано перед виконанням) ```bash python3 ops/prune_audit_db.py --dry-run ``` Override шляху/періоду: ```bash python3 ops/prune_audit_db.py --data-dir "/app/data" --retention-days 90 --dry-run ``` ## Виконання prune ```bash python3 ops/prune_audit_db.py --batch-size 5000 ``` З VACUUM після видалення: ```bash python3 ops/prune_audit_db.py --batch-size 5000 --vacuum ``` ## CLI параметри - `--data-dir` — шлях до `SOFIIA_DATA_DIR` (якщо не заданий, бере env або `/app/data`). - `--retention-days` — override retention (`SOFIIA_AUDIT_RETENTION_DAYS` або 90). - `--batch-size` — розмір батчу видалення (default `5000`). - `--dry-run` — лише звіт, без видалення. - `--vacuum` — VACUUM після видалення. - `--yes` — reserved no-op (для майбутнього interactive safeguard). ## Exit codes - `0` — OK - `1` — error (DB path/schema/permissions/SQL) ## Перевірка розміру DB ```bash du -h "${SOFIIA_DATA_DIR:-/app/data}/sofiia.db" ``` ## Приклад cron (щонеділі вночі, 03:30 UTC) ```cron 30 3 * * 0 cd /opt/microdao-daarion && SOFIIA_DATA_DIR=/app/data SOFIIA_AUDIT_RETENTION_DAYS=90 /usr/bin/python3 ops/prune_audit_db.py --batch-size 5000 >> /var/log/sofiia-audit-prune.log 2>&1 ``` ## Порядок безпечного запуску 1. `--dry-run` 2. перевірка candidates/min/max ts 3. реальний prune 4. опційно `--vacuum` у low-traffic вікні