# 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 вікні
