Commit Graph

3 Commits (dae03bc4447999fd4f494f130344125bd729d7f6)

Author SHA1 Message Date
nexxo 8733686dd3 Fix-Welle Schlussreview: Tunnel-Rettung und Waechter melden Misserfolg ehrlich
C1: rescue-tunnel.sh zaehlt Probleme (kein Zugang geladen, conntrack ohne
Root) und gibt sie als Exit-Code zurueck, statt bei jedem Fehlschlag Exit 0
zu melden. Die Konsole zeigt jetzt zusaetzlich das Protokoll der letzten
Tunnel-Rettung (UpdateChannel::rescueLog(), dasselbe <details>-Muster wie
das Update-Protokoll), und "erfolgreich" ist einem zurueckhaltenderen
"durchgelaufen"/"completed" gewichen, das nicht mehr behauptet als das
Skript wirklich weiss.

I1: watchdog.sh gewann `geheilt=true` bisher unmittelbar nach `up -d`,
`--force-recreate` und `artisan up`, ohne nachzupruefen, ob der Griff
gewirkt hat. Ein neues `fehlgeschlagen`-Flag laesst einen Misserfolg den
Lauf-Ausgang gewinnen, auch wenn ein anderer Zweig im selben Lauf
erfolgreich war -- die Konsole zeigt jetzt outcome=tried statt sich hinter
outcome=healed zu verstecken.

M3: watchdog_stood_down nennt nicht mehr nur "ein Update" als Sperrenhalter
-- die Sperre haelt inzwischen auch proxy-hosts, restart, archive-key und
rescue-tunnel.

M4: das Runbook nennt den Konsolen-Knopf jetzt vor der Kommandozeile.

M7: ConfirmRescueTunnel hat jetzt einen Test, nach dem Vorbild von
ConfirmReleaseUpdateLock -- mount()s authorize und die Ereignisverdrahtung
Modal -> Seite waren ungeprueft.

Volle Suite: 3036 bestanden, 0 fehlgeschlagen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 19:09:02 +02:00
nexxo 1a5843670c Fix-Runde 1 (Task 3): Waechter-Fehlschlag sichtbar, Tunnel-Rettung nicht mehr stumm
CRITICAL: der wg0-Fix aus Runde 0 (geheilt=true erst nach der zweiten
Probe) liess einen fehlgeschlagenen Rettungsversuch auf outcome=idle
fallen -- die einzige Zeile, die actions zeigte, war der healed-Zweig.
Die Konsole meldete "nichts zu tun", waehrend kein Host erreichbar war.
Neuer @elseif ($watchdog['actions'])-Zweig vor @else, text-warning,
Schluessel watchdog_tried (de/en). Kein Eingriff in watchdog.sh noetig.

IMPORTANT: rescue_last_run wurde geschrieben, aber von keinem Blade
gelesen, und write_status idle (ohne Argument) verschluckte den
Agentenfehler. write_status idle "$RESCUE_ERROR" wie beim proxy-hosts-
Zweig daneben; UpdateChannel::state() liefert rescue_last_run jetzt
strukturiert (finished_at als Carbon, error uebersetzt); neue Zeile in
der Update-Karte, neuer Uebersetzungscode update_error.rescue_failed.

Fuenf neue Tests, alle nachweislich rot gegen den vorherigen Stand
(per git stash isoliert geprueft) und gruen mit dem Fix.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 18:22:01 +02:00
nexxo 9d1811beea Tunnel-Rettung aus der Konsole, Waechter und Wirt-Helfer sichtbar
Neue Anfrageart rescue-tunnel im bestehenden Update-Postkasten (kein
zweiter Weg): UpdateChannel::requestRescueTunnel(), der Agent fuehrt
deploy/rescue-tunnel.sh mit Frist aus, die Konsole zeigt Ergebnis,
Waechter-Stand und Wirt-Helfer-Vertrag in der Update-Karte, Bestaetigung
im Modal (R23) nach dem Muster von ConfirmReleaseUpdateLock.

Zusatzfix in deploy/watchdog.sh: der wg0-Block meldete geheilt=true
schon, bevor geprueft war, ob wg-quick up wg0 wirklich gewirkt hat --
ein fehlgeschlagener Tunnelaufbau haette der Konsole "healed" vorgemacht.
geheilt wird jetzt erst nach der zweiten wg-show-Probe gesetzt, mit
Regressionstest in WatchdogVisibilityTest.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 17:59:39 +02:00