# noahROBOT Update, Rueckfall und Entfernung

Status: Windows-Basisrelease 1.2.0, vorbereitete Installationsrevision
`1.2.0-r26`. Es werden versionierte Releases und kontrollierte Junctions
verwendet. Alle veraendernden Skripte sind standardmaessig Trockenlaeufe.

## 1. Vor jedem Update

- Motorversorgung, L298N und Funduino trennen.
- `status.ps1`, `verify-bootstrap.ps1` und `diagnose.ps1` speichern.
- ZIP- und Manifest-Hash pruefen.
- freien Speicher und vorhandene `current`-/`previous`-Ziele erfassen.
- Konfiguration und Dienst-XML in das zeitgestempelte Backup aufnehmen.
- `mode=simulation`, `serialEnabled=false` und
  `realMotorControlEnabled=false` im neuen Release kontrollieren.

## 2. Update

Für die vorbereitete Schulrevision `1.2.0-r26` kann im entpackten Paket
`NOAH-ROBOT-SCHULUPDATE.cmd` verwendet werden. Der Launcher fordert UAC an,
installiert die neue Revision und startet danach automatisch die lokale
WLAN-/QR-Einrichtung.

```powershell
.\scripts\windows\update.ps1 -SourceRoot C:\Pfad\zu\noahrobot-windows-1.2.0 -ReleaseVersion 1.2.0-r26
```

Der erste Lauf zeigt nur die Aenderungen. Danach:

```powershell
.\scripts\windows\update.ps1 -SourceRoot C:\Pfad\zu\noahrobot-windows-1.2.0 -ReleaseVersion 1.2.0-r26 -Apply
```

Das Skript stoppt in sicherer Reihenfolge, installiert in ein neues
Releaseverzeichnis, prueft Caddy/Health/Readiness/Gate und schaltet erst dann
`current` um. Der bisherige Stand wird `previous`.

Ist das Roboternetz bereits freigegeben, werden Dienst und interaktiver
Publisher-Task vor dem Junction-Wechsel gestoppt. Danach wird abhängig von
`publisherContext` ausschließlich der konfigurierte Publisher neu gestartet;
beide dürfen nie parallel laufen.

## 3. Automatischer und manueller Rueckfall

Falls ein Healthcheck nach dem Umschalten fehlschlaegt, darf das neue Release
nicht aktiv bleiben. Manuell:

```powershell
.\scripts\windows\rollback.ps1
.\scripts\windows\rollback.ps1 -Apply
```

Danach `verify-bootstrap.ps1` erneut ausfuehren. Der Rueckfall veraendert weder
Windows noch MediaWiki-Daten und aktiviert keine Hardware.

Ein Rueckfall auf eine Revision ohne Roboternetz-Unterstützung stoppt zuerst den
Netzwerkdienst, entfernt die scoped Roboternetz-Firewallregeln und lässt
vorhandene Schul-/Heim-WLAN-Profile unverändert.

## 4. Konfigurationsrueckfall

Backups liegen unter `C:\ProgramData\noah-robot\backups\<Zeitstempel>`. Nur
bekannte noahROBOT-Dateien einzeln zurueckspielen; nie pauschal fremde
Windows-Konfiguration ueberschreiben. OpenSSH-Aenderungen werden vom Installer
nicht vorgenommen. Das urspruengliche Energieschema steht in der lokalen
Installations-State-Datei und wird bei Entfernung wieder aktiviert.

## 5. Dienste stoppen oder starten

```powershell
.\scripts\windows\stop.ps1
.\scripts\windows\stop.ps1 -Apply
.\scripts\windows\start.ps1 -Apply
```

Stoppreihenfolge: Roboternetz, Watchdog, mDNS, Web, Gateway. Ein Dienststart ist
nur bei geschlossenem Hardware-Gate zulaessig.

## 6. Deinstallation

```powershell
.\scripts\windows\uninstall.ps1
.\scripts\windows\uninstall.ps1 -Apply
```

Standardmaessig bleiben Logs, Diagnosen und Backups erhalten. Eine optionale
Datenloeschung muss separat bestaetigt werden. Das Skript entfernt nur
noahROBOT-Dienste, die beiden benannten privaten Firewallregeln, noahROBOT-Pfade
und das eigene Energieschema. Windows, Python, Arduino CLI, Caddy-Downloads,
OpenSSH und fremde Anwendungen werden nicht blind deinstalliert.

## 7. Notfall

1. physisch Motorenergie trennen,
2. rastenden Not-Stopp betaetigen,
3. Funduino-USB trennen,
4. Dienste lokal stoppen,
5. `realMotorControlEnabled=false` verifizieren,
6. auf `previous` rueckfallen oder noahROBOT deinstallieren,
7. nur synthetische, secret-freie Diagnosen exportieren.
