diff --git a/docs/AUFTRAGSBUCH.md b/docs/AUFTRAGSBUCH.md index 64ba066..5723d5f 100644 --- a/docs/AUFTRAGSBUCH.md +++ b/docs/AUFTRAGSBUCH.md @@ -129,6 +129,33 @@ erweitert nur der Commander, nie das Skript. legt er zusätzlich EINE rohe Idee in die Ideen-Queue („Probe bauen?", idempotent je Release-Tag) — der Blick nach draußen füttert damit denselben Kreislauf. +## Curator Auto-Archivierung (Cron `0 3 * * *` — täglich um 03:00) + +**Zweck:** Automatische Archivierung inaktiver Skills nach 14 Tagen ohne Nutzung. + +**Skripte:** +- `~/.hermes/scripts/curator-archive-watchdog.sh` — Cron-Einstieg, ruft das Python-Skript auf. +- `~/.hermes/scripts/curator_archive_logic.py` — Hauptlogik. Liest `.curator_state` und `.usage.json` aus `~/.hermes/skills/`, prüft auf Inaktivität (>14 Tage seit letztem Gebrauch), überspringt gepinnte und exkludierte Skills, verschiebt Skills nach `.archive//`. +- `~/.hermes/scripts/curator-idle-watchdog.sh` — Zusätzlicher Watchdog (Sonntag 00:00, Cron `0 0 * * 0`): prüft, ob der Curator selbst ≥14 Tage idle ist und triggert ggf. eine Reaktivierung. + +**Konfiguration** (`~/.hermes/skills/.curator_state`): +- `archivierung.enabled: false` — Archivierung muss explizit aktiviert werden. +- `archivierung.threshold_days: 14` — Tage ohne Nutzung bis zur Archivierung. +- `archivierung.excluded_skills: [...]` — Liste der nie zu archivierenden Skills. +- `archivierung.last_archive_run_at` — Zeitstempel des letzten Durchlaufs. + +**Ablauf im Durchlauf:** +1. Prüft, ob Archivierung aktiviert ist. +2. Läuft alle Skills durch `.usage.json`. +3. Überspringt: gepinnte Skills, exkludierte Skills, aktive Skills (<14 Tage). +4. Archiviert: State auf "archived" setzen, Verzeichnis nach `.archive//` verschieben, Usage-Datei aktualisieren. +5. Protokolliert in `~/.hermes/logs/curator/archive-.log`. + +**Sicherheit:** +- Archivierung standardmäßig deaktiviert — passiert nie ohne explizite Freigabe. +- Gepinnte und exkludierte Skills werden nie berührt. +- Archivierung ist reversibel: Skills können manuell aus `.archive/` zurückverschoben werden. + ## Leitplanken - Propose-only bleibt: **keine Code-Zeile geht ohne Klick live.** Das Gate ist dieses