UMBAU v3 P2: Steward — Waechter-Loops als eigener Prozess mc2-steward

Re-Warm, Health-Sentry und Mem0-Dedupe laufen als eigener Dienst
(backend/steward.py, Restart=always) statt im Steuerpult-Lifespan:
MC2-Neustarts nehmen den Waechtern nicht mehr Timing/Flanken-Gedaechtnis,
und der Sentry ueberwacht erstmals MC2 SELBST + mc2-gateway (Telegram
funktioniert auch bei totem Steuerpult; Briefkasten-Abgabe per HTTP via
MC_ANNOUNCE_HTTP, Store bleibt exklusiv beim MC2-Prozess). Warm-Nudge
nach Config-Aenderung via mtime-Watch (5 s) statt In-Process-Signal.
Reiner Konfig-Split: MC2-Unit setzt die drei ENABLED-Schalter auf 0,
Zeilen entfernen = Rollback. reminders_loop bleibt bewusst in MC2
(teilt Datei+CRUD mit /api/reminders, Zwei-Schreiber-Risiko).

Stellt ausserdem den beim Karten-Neuaufbau (ccc9a25) verlorenen
stack-postcheck-Block fuer mc2-gateway wieder her (+ Steward-Check 4c).

Baut auf feature/von-allein-und-gateway-p1 auf; Annahme schliesst P1 ein.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-15 14:15:36 +02:00
parent ccc9a25a25
commit a9c0239f8a
8 changed files with 204 additions and 5 deletions
+20
View File
@@ -65,6 +65,26 @@ else
echo "FAIL · MC2 /api/health meldet Engine nicht erreichbar"; fail=1
fi
# 4b. MC2-Gateway (eigenständiger /v1-Datenpfad, UMBAU v3 P1) gesund? Nur prüfen, wenn
# die Unit enabled ist — Postchecks können auf Ständen vor dem Gateway-Auszug laufen.
GW_URL="${MC2_GATEWAY_URL:-http://127.0.0.1:9010}"
if systemctl --user is-enabled --quiet mc2-gateway 2>/dev/null; then
if curl -sf -m 8 "$GW_URL/gw/health" 2>/dev/null | grep -qE '"engine_reachable":[[:space:]]*true'; then
echo "PASS · mc2-gateway gesund (Prozess + Engine)"
else
echo "FAIL · mc2-gateway antwortet nicht/Engine weg — LLM-DATENPFAD BETROFFEN"; fail=1
fi
fi
# 4c. MC2-Steward (Wächter-Dienst, UMBAU v3 P2) aktiv? (nur wenn Unit enabled)
if systemctl --user is-enabled --quiet mc2-steward 2>/dev/null; then
if systemctl --user is-active --quiet mc2-steward; then
echo "PASS · mc2-steward aktiv (Wächter laufen)"
else
echo "FAIL · mc2-steward NICHT aktiv — Box ohne Wächter"; fail=1
fi
fi
# 5. Mem0-Sidecar (Gedächtnis) erreichbar?
if curl -sf -m 5 "$MEM0_URL/health" >/dev/null 2>&1; then
echo "PASS · Mem0-Sidecar erreichbar"