Fix: Hermes-Update meldet Fehlschlag jetzt ehrlich (rc-Maskierung entfernt)

Befund 08.07.: 'hermes update' scheiterte real an einem verwaisten
.git/index.lock (git stash exit 1), aber der Job wurde GRUEN — das ';'
vor dem Dienst-Neustart (noetig, damit die gestoppte UI auch im
Fehlerfall wieder hochkommt) schluckte den Update-Fehler, und der
Postcheck bestand mit dem ALTEN Agenten. User sah 'done', Badge blieb
(125 Commits Rueckstand). Neu: RC wird festgehalten, Dienste starten
IMMER wieder, aber der Job uebernimmt den echten Update-RC und
schreibt eine Klartext-Zeile ins Log. Lock auf der Box entfernt
(Verwaisung von gestern 21:22, wie beim MC2-Repo).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-08 17:46:39 +02:00
parent f2d357c5d8
commit 2d95b0a334
+14 -6
View File
@@ -711,14 +711,22 @@ def _hermes_update_cmd() -> str:
f"&& rm -rf {hui_dist} && cp -r /tmp/h-build {hui_dist}; fi" f"&& rm -rf {hui_dist} && cp -r /tmp/h-build {hui_dist}; fi"
) )
return (f"bash {backup} || true; " # EHRLICHER Exit-Code (Lehre 08.07.): Die Dienste müssen auch bei einem GESCHEITERTEN
# Update wieder hochkommen (die UI wurde ja gestoppt) — aber der Job darf dann nicht
# grün sein. Früher schluckte das `;` vor dem Neustart jeden Update-Fehler: Job rc=0,
# Badge blieb, User sah „done aber nichts passiert" (Update scheiterte real an einem
# verwaisten .git/index.lock). Jetzt: RC festhalten, Dienste immer starten, RC melden.
return ("RC=0; "
f"bash {backup} || true; "
f"systemctl --user stop hermes-builtin-ui || true; " f"systemctl --user stop hermes-builtin-ui || true; "
f"cd {path} && {py} -m hermes_cli.main update --yes " f"{{ cd {path} && {py} -m hermes_cli.main update --yes "
f"&& {py} -m hermes_cli.main doctor " f"&& {py} -m hermes_cli.main doctor "
f"&& {build_cmd} " f"&& {build_cmd}; }} || RC=1; "
f"&& systemctl --user reset-failed hermes-builtin-ui || true; " f"systemctl --user reset-failed hermes-builtin-ui 2>/dev/null; "
f"systemctl --user restart hermes-gateway hermes-builtin-ui " f"systemctl --user restart hermes-gateway hermes-builtin-ui || RC=1; "
f"&& sleep 6 && bash {postcheck}") f"sleep 6; bash {postcheck} || RC=1; "
f"if [ $RC -ne 0 ]; then echo '✗ HERMES-UPDATE FEHLGESCHLAGEN (Dienste laufen wieder, aber alter Stand)'; fi; "
f"exit $RC")
def hermes_update_job() -> dict: def hermes_update_job() -> dict: