# noahROBOT Windows-Dienste

Status: WinSW-Definitionen 1.2.0 implementiert und statisch geprueft; Installation
auf dem Mini-PC steht aus.

| Dienst | Bindung/Aufgabe | Start-/Fehlerzustand |
| --- | --- | --- |
| `noah-robot-gateway` | FastAPI/Uvicorn auf `127.0.0.1:8765` | Simulation, DISARMED, STOP |
| `noah-robot-web` | Caddy HTTPS 443, PWA, Reverse Proxy | keine Serialrechte |
| `noah-robot-mdns` | `_https._tcp.local` fuer `noah-robot.local` | nur private IPv4, keine Tokens |
| `noah-robot-watchdog` | prueft localhost-Health/Gate | latched Fault nach drei Fehlern |

Alle Dienste starten verzoegert automatisch. WinSW rotiert Logs bei 10 MiB und
behaelt fuenf Dateien. Zwei begrenzte Restartversuche erfolgen nach 10 und 30
Sekunden; danach bleibt der Fehler sichtbar. Der Watchdog startet selbst keine
Motoraktion und hebt keinen Fehler auf.

## Shutdown

`stop.ps1` stoppt Watchdog, mDNS und Web, dann den Gateway. Der FastAPI-Lifespan
sendet beim kontrollierten Shutdown STOP; bei einem haengenden Prozess bleibt
der unabhaengige Funduino-Watchdog die letzte Stoppebene. Ein Dienststart arm't
oder faehrt nie automatisch.

## Health und Readiness

- `/health` und `/healthz`: Prozess lebt, Version/Modus/Gate ohne Secrets
- `/ready` und `/readyz`: in Release 1.2.0 nur gruen, wenn die Simulation bereit
  und das Hardware-Gate geschlossen ist
- Runtimeantworten tragen `Cache-Control: no-store`

## Betrieb

```powershell
.\scripts\windows\start.ps1
.\scripts\windows\stop.ps1
.\scripts\windows\status.ps1
.\scripts\windows\export-diagnostics.ps1
```

Start und Stop zeigen ohne `-Apply` nur den Plan. Die bestaetigte Ausfuehrung
erfolgt mit `start.ps1 -Apply` beziehungsweise `stop.ps1 -Apply`.

Optionale Modell- und Mediendienste sind nicht installiert. Sie duerfen spaeter
nur localhost-gebunden und mit niedrigerer Prioritaet als das Gateway ergaenzt
werden.
