Merge branch 'worktree-agent-a1c799645a0ade657' into wartung/restarbeiten
This commit is contained in:
+9
-3
@@ -24,13 +24,18 @@ DEPLOY_LOG="/srv/models/mc2-deploy.log"
|
||||
|
||||
# Units, die ganz dem Repo gehören (deploy.sh spielt sie aus). Aktiviert wird nur, was laufen soll:
|
||||
# Konsole und Spracherkennung schlafen seit 24.09.2026 (disable --now), ihre Units bleiben aber aktuell.
|
||||
# Die Sicherung auf den PBS (pbs-backup) liegt seit 24.09.2026 im Repo; eingeschaltet wird sie von Hand
|
||||
# (docs/BETRIEB.md, Sicherung) — deploy.sh schaltet sie weder ein noch aus.
|
||||
UNITS="mission-control-2.service mc2-gateway.service mc2-steward.service lucy-stimme.service
|
||||
box-console.service voice-service.service
|
||||
mc2-radar.service mc2-radar.timer mc2-backup.service mc2-backup.timer
|
||||
mc2-morgenmeldung.service mc2-morgenmeldung.timer mc2-autoupdate.service mc2-autoupdate.timer
|
||||
projekte-sync.service projekte-sync.timer"
|
||||
projekte-sync.service projekte-sync.timer
|
||||
mc2-probe-wiederherstellung.service mc2-probe-wiederherstellung.timer
|
||||
pbs-backup.service pbs-backup.timer"
|
||||
AKTIV="mission-control-2.service mc2-gateway.service mc2-steward.service lucy-stimme.service
|
||||
mc2-radar.timer mc2-backup.timer mc2-morgenmeldung.timer mc2-autoupdate.timer projekte-sync.timer"
|
||||
mc2-radar.timer mc2-backup.timer mc2-morgenmeldung.timer mc2-autoupdate.timer projekte-sync.timer
|
||||
mc2-probe-wiederherstellung.timer"
|
||||
# Skills, die abgelöst sind: aus Lucys Skill-Index nehmen (verschoben, nicht gelöscht). Dazu die
|
||||
# alten Bindestrich-Doppel der übrigen Skills (deploy.sh schreibt die Unterstrich-Fassung).
|
||||
SKILLS_ALT="autonomie konzept-fliessband llm-wiki morning-report orchestrator projekt-start pruefstand
|
||||
@@ -125,7 +130,8 @@ stufe2() {
|
||||
# shellcheck disable=SC2086
|
||||
systemctl --user enable $AKTIV >/dev/null 2>&1
|
||||
# shellcheck disable=SC2086
|
||||
systemctl --user start mc2-radar.timer mc2-backup.timer mc2-morgenmeldung.timer projekte-sync.timer
|
||||
systemctl --user start mc2-radar.timer mc2-backup.timer mc2-morgenmeldung.timer projekte-sync.timer \
|
||||
mc2-probe-wiederherstellung.timer
|
||||
# Den Update-Timer nur starten, wenn er nicht schon läuft: Mit Persistent=true holt ein frisch
|
||||
# gestarteter Timer einen verpassten Sonntagslauf sofort nach (so am 24.09.2026 passiert). Neu
|
||||
# gestartet wird die Box dabei ohnehin nur sonntags zwischen 04 und 07 Uhr (autoupdate.sh).
|
||||
|
||||
@@ -17,28 +17,9 @@ fail=0
|
||||
|
||||
echo "=== Hermes Post-Update: Gehirn-Check ==="
|
||||
|
||||
# --- Hermes-Runtime-Patch-Traeger (20.07.2026): ein Update setzt den Quellbaum ---
|
||||
# --- zurueck → unsere Fixes (needs_input-wartet, Startreife-Gate, Orphan-Guard, ---
|
||||
# --- Kontext-Vererbung, Etappen-Kette) hier RE-eintragen. Exit 10 = etwas neu ---
|
||||
# --- angewandt → Gateway neu laden; Exit 1 = ein Patch passt nicht mehr → ROT. ---
|
||||
PATCH_APPLY="${MC2_SRC:-$HOME/mission-control-v2}/deploy/hermes-patches/apply.py"
|
||||
if [ -f "$PATCH_APPLY" ]; then
|
||||
python3 "$PATCH_APPLY" >/dev/null 2>&1; _prc=$?
|
||||
if [ "$_prc" -eq 10 ]; then
|
||||
systemctl --user try-restart hermes-gateway >/dev/null 2>&1 || true
|
||||
echo "PASS · Hermes-Runtime-Patches nach Update RE-angewandt (Gateway neu geladen)"
|
||||
elif [ "$_prc" -eq 0 ]; then
|
||||
echo "PASS · Hermes-Runtime-Patches unveraendert vorhanden"
|
||||
else
|
||||
echo "FAIL · Hermes-Runtime-Patches: ein Patch passt nicht mehr zum aktualisierten Quellcode — pruefen"; fail=1
|
||||
fi
|
||||
else
|
||||
# Kein Fehler: Der Patch-Traeger wurde mit dem MC2-Kahlschlag (1e68f62) entfernt. Seine
|
||||
# Fixes zielten auf einen Hermes-Stand, der inzwischen tausende Commits zurueckliegt —
|
||||
# sie wuerden auf dem heutigen Quellcode ohnehin nicht mehr greifen. WARN statt FAIL, damit
|
||||
# es sichtbar bleibt, falls jemand wieder Runtime-Patches braucht.
|
||||
echo "WARN · hermes-patches/apply.py nicht vorhanden (mit 1e68f62 bewusst entfernt) — uebersprungen"
|
||||
fi
|
||||
# Der Block fuer den Hermes-Runtime-Patch-Traeger (deploy/hermes-patches/apply.py) ist am 24.09.2026 entfallen:
|
||||
# Der Traeger wurde mit 1e68f62 bewusst entfernt (Hermes-Quellcode wird nicht gepatcht, AGENTS.md), und die
|
||||
# Pruefung meldete seitdem bei jedem Lauf nur noch „WARN · nicht vorhanden“.
|
||||
|
||||
# --- Config-Drift-Wächter (Lehre aus v0.18, 02.07.2026): Hermes fällt bei unbekannten ---
|
||||
# --- Config-Werten STILL auf Defaults zurück (approvals.mode 'auto' -> manual -> alle ---
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# systemd-USER-Unit: monatliche Probe-Wiederherstellung (seit 24.09.2026), gestartet von
|
||||
# mc2-probe-wiederherstellung.timer. Packt die jüngste Sicherung aus /srv/models/mc2-backups probeweise in
|
||||
# einen Tmp-Ordner unter /var/tmp aus, prüft die Pflichtinhalte (Lucys Gedächtnis, SOUL.md, Skills,
|
||||
# Cron-Skripte, Hermes-Config, Box-Wart-Zustand, Units) und löscht den Ordner wieder. Lebende Dateien fasst
|
||||
# sie nie an. Ergebnis: /srv/models/mc2-probe-wiederherstellung.json (liest der Wächter); bei Rot eine
|
||||
# Meldung über notify.sh (nachts in die Morgenmeldung). Logik: backend/services/probe_wiederherstellung.py.
|
||||
# Von Hand: systemctl --user start mc2-probe-wiederherstellung.service
|
||||
|
||||
[Unit]
|
||||
Description=MC2 Probe-Wiederherstellung (jüngste Sicherung probeweise auspacken und prüfen)
|
||||
Documentation=file:%h/mission-control-v2/docs/BETRIEB.md
|
||||
After=mc2-backup.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
WorkingDirectory=%h/mission-control-v2/backend
|
||||
ExecStart=%h/mission-control-v2/backend/.venv/bin/python -m services.probe_wiederherstellung
|
||||
Environment=PYTHONPATH=%h/mission-control-v2
|
||||
Environment=MC_MODELS_DIR=/srv/models
|
||||
Environment=MC_LOCAL_TZ=Europe/Berlin
|
||||
Nice=10
|
||||
IOSchedulingClass=idle
|
||||
TimeoutStartSec=15min
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Monatliche Probe-Wiederherstellung (erster Montag im Monat, 05:15)
|
||||
|
||||
[Timer]
|
||||
# Erster Montag im Monat: nie sonntags (Updates So 04:30, Neustart bis 07:00) und lange nach der Sicherung
|
||||
# (03:30, +≤5 min), deren Ergebnis sie prüft. Rot geht nachts in die Morgenmeldung um 07:00.
|
||||
# Persistent=true holt einen verpassten Lauf nach — ungefährlich, die Probe schreibt nur in /var/tmp und in
|
||||
# ihre Zustandsdatei.
|
||||
OnCalendar=Mon *-*-01..07 05:15:00
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
@@ -0,0 +1,17 @@
|
||||
# systemd-USER-Unit: Sicherung der Box auf den Proxmox Backup Server (PBS 192.168.178.156, Datastore „qnap“ =
|
||||
# NFS-Freigabe auf dem QNAP), gestartet von pbs-backup.timer. Lief seit 09.07.2026 täglich (Unit lag nur auf der
|
||||
# Box), brach am 21.08. ab (Quellordner des alten Gedächtnis-Dienstes weg) und war seitdem aus. Seit 24.09.2026
|
||||
# im Repo: deploy.sh spielt die Unit aus, eingeschaltet wird sie von Hand (docs/BETRIEB.md, Sicherung).
|
||||
# Skript: deploy/pbs-backup.sh (Zugang und Client liegen nur auf der Box, nicht im Repo).
|
||||
|
||||
[Unit]
|
||||
Description=Sicherung der Box auf den PBS (~/.hermes, Wissens-Sammlung, llama-swap-Config)
|
||||
Documentation=file:%h/mission-control-v2/docs/BETRIEB.md
|
||||
After=mc2-backup.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/bash %h/mission-control-v2/deploy/pbs-backup.sh
|
||||
Nice=10
|
||||
IOSchedulingClass=idle
|
||||
TimeoutStartSec=1h
|
||||
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
# pbs-backup.sh — Sicherung der Box auf den Proxmox Backup Server (Backup-ID aibox, Datastore „qnap“).
|
||||
#
|
||||
# Zweite Schicht neben der täglichen Tarball-Sicherung (backup.sh): ~/.hermes ganz (auch Sitzungen und Protokolle,
|
||||
# die der Tarball bewusst weglässt), die Wissens-Sammlung und die llama-swap-Config als pxar-Archive. Der PBS
|
||||
# dedupliziert und hebt Stände auf (Prune auf dem PBS: 7 Tage, 4 Wochen, 3 Monate); die Daten liegen auf dem QNAP.
|
||||
# Inkrementell dauert ein Lauf rund 30 Sekunden.
|
||||
#
|
||||
# Geschichte: lief vom 09.07.2026 an täglich um 03:50 (damals ~/bin/pbs-backup.sh, nicht im Repo). Am 21.08. brach
|
||||
# sie ab, weil ihr erster Quellordner (/srv/models/mem0, das abgelöste Gedächtnis) fehlte, und wurde im KISS-Umbau
|
||||
# abgeschaltet. Seit 24.09.2026 im Repo und ohne mem0. Fehlt ein optionaler Ordner, läuft sie ohne ihn weiter.
|
||||
#
|
||||
# Braucht (nur auf der Box, nie im Repo):
|
||||
# ~/.config/pbs-backup/env PBS_REPOSITORY, PBS_PASSWORD, PBS_FINGERPRINT (Rechte 600)
|
||||
# ~/bin/proxmox-backup-client statisches Client-Programm
|
||||
# Aufruf: systemctl --user start pbs-backup.service (Protokoll: journalctl --user -u pbs-backup)
|
||||
set -euo pipefail
|
||||
|
||||
ENV_DATEI="${MC_PBS_ENV:-$HOME/.config/pbs-backup/env}"
|
||||
CLIENT="${MC_PBS_CLIENT:-$HOME/bin/proxmox-backup-client}"
|
||||
BACKUP_ID="${MC_PBS_BACKUP_ID:-aibox}"
|
||||
HERMES_DIR="${HERMES_HOME:-$HOME/.hermes}"
|
||||
LSWAP_DIR="${MC_PBS_LLAMASWAP_DIR:-/etc/llama-swap}"
|
||||
VAULT_DIR="${MC_PBS_VAULT_DIR:-$HOME/wissens-vault}"
|
||||
|
||||
[ -r "$ENV_DATEI" ] || { echo "! Zugangsdatei fehlt: $ENV_DATEI"; exit 1; }
|
||||
[ -x "$CLIENT" ] || { echo "! proxmox-backup-client fehlt: $CLIENT"; exit 1; }
|
||||
|
||||
# Pflicht: ohne diese beiden ist die Sicherung wertlos.
|
||||
for pflicht in "$HERMES_DIR" "$LSWAP_DIR"; do
|
||||
[ -d "$pflicht" ] || { echo "! Ordner fehlt: $pflicht"; exit 1; }
|
||||
done
|
||||
archive=("hermes.pxar:$HERMES_DIR" "llamaswap.pxar:$LSWAP_DIR")
|
||||
# Optional: fehlt die Wissens-Sammlung, läuft die Sicherung ohne sie (am 21.08. brach sie an so etwas ab).
|
||||
if [ -d "$VAULT_DIR" ]; then
|
||||
archive+=("vault.pxar:$VAULT_DIR")
|
||||
else
|
||||
echo "Hinweis: $VAULT_DIR fehlt, wird übersprungen."
|
||||
fi
|
||||
|
||||
# Zugang erst hier einlesen: PBS_PASSWORD und Co. landen nur in der Umgebung des Clients, nie auf der Befehlszeile.
|
||||
set -a
|
||||
# shellcheck disable=SC1090
|
||||
. "$ENV_DATEI"
|
||||
set +a
|
||||
exec "$CLIENT" backup "${archive[@]}" --backup-id "$BACKUP_ID"
|
||||
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Tägliche Sicherung auf den PBS (03:50)
|
||||
|
||||
[Timer]
|
||||
# Nach der Tarball-Sicherung (03:30, +≤5 min) und vor dem Sonntags-Update (04:30). Dauert inkrementell ~30 s.
|
||||
# Persistent=true holt einen verpassten Lauf nach. Achtung beim ersten Einschalten: Der Timer lief zuletzt am
|
||||
# 21.08.2026 — er holt deshalb sofort einen Lauf nach (ungefährlich, nur eine zusätzliche Sicherung).
|
||||
OnCalendar=*-*-* 03:50:00
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
Reference in New Issue
Block a user