---
name: Aria Heartbeat
description: Timer-Index (was Aria automatisch tut) + Cron-owned Deadline-Block. Detection ist deterministisch, nur Urteil braucht ein Modell.
type: system
date: 2026-06-03
title: HEARTBEAT
tags: [root]
status: aktiv
related: [[SOUL]], [[CORRECTIONS]], [[ARCHITECTURE]]
---

# ARIA - Heartbeat

> **Prinzip (KAR-684, Polling→Interrupts):** Eine Bedingung *erkennen* (Deadline <7d, Site 500s,
> neue Mail) ist Datumsmathe / HTTP-Check / Webhook und braucht **kein LLM**. Nur ein *Urteil fällen*
> (ist das dringend, lohnt diese MRR-Idee) braucht ein Modell im Loop. Darum: Detection läuft in
> deterministischen Timern/Monitoren, das Modell wird nur für die Reflexions-Reste geweckt — gebündelt
> in Briefing + Abend-Handover, nicht pro Interaktion. Plumbing-Doku liegt in [[ARCHITECTURE]], nicht hier.

## Tägliche Routinen (deterministische systemd-Timer)
| Zeit (MESZ) | Aktion | Trigger |
|-------------|--------|---------|
| 00:30/06:30/12:30/18:30 | **AKP Stage 1 Ingest** (yt-dlp Flat-Playlist gegen 22 Channels, KAR-74) — Zeiten korrigiert 08.07.2026 gegen `systemctl cat` (KAR-882) | systemd `aria-akp-ingest.timer` |
| 05:00 | **AKP Stage 2 Triage** (Haiku 4.5, 4-Achsen-Rubric, JSON-Verdict) | systemd `aria-akp-triage.timer` |
| 06:00 | **AKP Stage 3 Deep Process** (Opus 4.7, 7-Punkt-Praxisanalyse + Multi-Level-Challenge → 00-Inbox/Videos/) | systemd `aria-akp-deep.timer` |
| 06:20 | **Deadline-Reconcile** (Linear due-dates ≤7d + deadlines.yaml → schreibt `## This Week`-Block unten) | systemd `aria-deadline-reconcile.timer` |
| 06:30 | **AI-Radar Sprint B Fetch** (8 Plattformen → `/var/lib/aria-radar/snapshots/`, KAR-38) | systemd `aria-radar-fetch.timer` |
| 06:45 | **Meta-Verify** (Self-Check Skripte/Timer/Hooks/Standing-Orders; Telegram-Score, KAR-589) | systemd `aria-verify.timer` |
| 07:00 | **Insight-Harvest** (Register-Ingest + Re-Surface-Loop, Coverage-Check, KAR-588) | systemd `aria-insight-harvest.timer` |
| 07:15 | KI-News Briefing an Kais | Cron/n8n |
| 07:30 | **AKP Stage 4 Briefing** Top-3 Wissens-Funde + Entscheidungsfrage (surfaced auch den Deadline-Block) | systemd `aria-akp-briefing.timer` |
| 07:30 | Morning Briefing (Termine + Linear + Status) | Cron/n8n |
| 07:45 | **Brain-Embed** (incremental pgvector-Refresh, KAR-595) | systemd `aria-brain-embed.timer` |
| 21:03 | **Abend-Handover**: System- & Sicherheitscheck + Reflexions-Reste (siehe unten) | Cron/n8n |

## Wöchentliche Routinen
| Tag | Aktion |
|-----|--------|
| Mo/Mi/Fr/So 09:00 | **Rule-Challenge** (LLM-as-Judge: alle Standing-Orders gegen Praxis; KAR-590) — `aria-rule-challenge.timer` |
| Sonntag 08:00 | **Self-Audit** (Transcript-Analyse: Frust-Signale, PII-Leak, Versprechen; KAR-589) — `aria-self-audit.timer` |
| Sonntag 03:15 | **Daily-Archive** (Logs >30 Tage → `06-Daily/Archiv/`) — real seit 08.07.2026 (KAR-881); der frühere „Sonntag 18:17 Obsidian Cleanup"-Block war Doku-Fiktion ohne Automatisierung (Audit-Befund) | systemd `aria-daily-archive.timer` |
| Sonntag 03:30 | Memory-Curator (Stale-Detection, kein Auto-Delete) | systemd `aria-memory-curator.timer` |

## Async + Fokus (KAR-591)
| Zeit | Aktion | Trigger |
|------|--------|---------|
| Alle 2h | **QUEUE-Processor** — Drop-Tasks aus `/root/aria/queue/` async → `generated/`, Code/Deploy → needs-session | `aria-queue-processor.timer` |
| Alle 5 Min | **Uptime-Monitor** — KADiCon-Site, edge-triggered (Ping nur bei up↔down, Anti-Flap 2×) | `aria-uptime-monitor.timer` |
| Montag 08:00 | **Weekly-Focus-Reminder** — Kais nach Wochen-Fokus fragen (WEEKLY-FOCUS.md) | `aria-weekly-focus-reminder.timer` |

<!-- DEADLINES:START -->
## This Week — Deadlines (auto, Cron-owned via aria-deadline-reconcile)
> Stand: 2026-09-09 · Horizont 7 Tage · Quelle: Linear due-dates + deadlines.yaml

- _Keine Deadlines in den nächsten 7 Tagen._

<!-- DEADLINES:END -->

## Reflexion (im Abend-Handover, NICHT pro Interaktion)
> Das ist die legitime Resterampe: urteils-lastiges Material, gebündelt auf 1-2 hochwertige Momente/Tag
> (Briefing + Handover), gefüttert von deterministischer Infrastruktur die nichts kostet. Kein Tick alle 45 Min.
- Gibt es eine Idee, die MRR bewegt? (offene Reflexion, einmal/Tag — keine erzwungene Antwort)
- Sind die Aufgaben dieser Woche sinnvoll priorisiert? (Roadmap-Sanity, nicht pro Nachricht)

## Deterministische Detection (kein LLM, kein Per-Tick-Polling)
| Concern | Detection-Mechanismus | Nicht mehr im Heartbeat-Prompt |
|---|---|---|
| Deadline <7d | `aria-deadline-reconcile` Cron → `## This Week`-Block | ✓ |
| KADiCon-Site 500s | `aria-uptime-monitor.timer` (5 Min, edge-triggered, Targets in `state/uptime-targets.txt`) | ✓ |
| Neues KI-Tool/Framework | AI-Radar Sprint B Timer (06:30) | ✓ (war doppelt) |
| Wettbewerber-Pricing | Scrape-Monitor bei Änderung *oder* Handover-Reflexion | ✓ |

## Trigger-Regel für neue Kandidaten
1. Bedingung per Code ohne Urteil erkennbar? → Script/Cron/Webhook, **nie** der Heartbeat.
2. Antwort braucht Generierung/Urteil? Ja → Script weckt Modell für **einen** gezielten Call. Nein → Script macht's selbst.
3. Natürliche Cadence/Event des Concerns? → Detection **dort** schedulen, nicht auf Heartbeat-Frequenz.

## Verwandte Notizen
- [[SOUL]] — Wer ich bin, Werte, Sicherheitsregeln
- [[CORRECTIONS]] — Fehler die ich nicht wiederholen darf
- [[ARCHITECTURE]] — Plumbing-Doku (Watchdog, Hooks, Logging, Selbstheilung) — on-demand, nicht im Bootstrap
