# noahROBOT Sicherheitskonzept

Status: verbindliche Sicherheitsbasis fuer Software 1.2.0. Digitale
Stoppebenen, Heartbeats, Watchdogs, E-Stop-Latch und persistentes
Hardware-Fault-Gate sind implementiert und automatisiert geprueft. Es besteht
weiterhin keine Freigabe fuer Realfahrt, Firmware-Flash oder Motorbestromung.

Nachpruefung 2026-07-16: Die reale Mini-PC-Abnahme bestand 55 von 55
REST-/WebSocket-/Pairing-/Rollen-/Lease-/Reconnect- und Safety-Pruefungen. Der
Endzustand war verriegelter E-Stop, `moving=false`, kein Controllerbesitz,
Hardware-Gate `closed`, Serial deaktiviert und
`realMotorControlEnabled=false`. Es gab keinen COM-Zugriff, Firmware-Upload,
Roboternetz-Aktivierung oder Motorstrom.

HW-02-Nachpruefung 2026-07-17: Das Gate verlangt nun zusaetzlich eine fuer den
Gesamtblockierstrom ausreichende Motorquelle, eine Motorversorgung nicht ueber
Nennspannung und nicht unter der dokumentierten Mindestbetriebsspannung. Der
Stallstrom muss bei derselben Quellenspannung ermittelt sein, die abgenommen
wird. Das Gate verlangt ausserdem plausible Sicherungsgrenzen, konkrete
Modul-/Jumper-/Not-Stopp-Nachweise, einen SHA-256-Beleg des
Verdrahtungsfotos, freien und gesicherten Antrieb, einstellbare
Strombegrenzung, einen real bestandenen Motorenergie-Unterbrechungstest und
eine zweite beobachtende Person.

HW-02-Neuplanung 2026-07-17: Der ausgewählte Motorpfad ist USB-A ohne
QC-Trigger und damit 5 V. Dafür muss der früher als gesteckt gemeldete
`5V-EN`-Jumper entfernt werden; die neue Stellung ist noch nicht physisch
bestätigt. Die vorbereitete Motorfirmware verwirft jeden Richtungswechsel nach
vollständigem STOP und verlangt einen frischen Frame nach mindestens 300 ms.
Das Gateway begrenzt die Anfahrrampe auf mindestens 800 ms. Beides ist
softwareseitig geprüft, aber nicht geflasht beziehungsweise real gemessen.

Netzwerk-Nachpruefung 2026-07-16: Realtek 8852BE, moderne Windows-Mobile-
Hotspot-API und Wi-Fi-Direct-Legacy-AP wurden rein lesend im Benutzer- und
SYSTEM-Kontext geprüft. Für den unabhängigen Hauptbetrieb ist ausschließlich
der lokale Wi-Fi-Direct-Legacy-AP vorgesehen. Er besitzt kein NAT und keine
Cross-Connectivity zum Schul-/Heimnetz. Aktivierung erfolgt nur mit
zeitbegrenzter Recovery und geschlossenem Hardware-Gate.

## 1. Nicht verhandelbare Invarianten

1. `STOP` ist der Start- und Fehlerzustand jeder Schicht.
2. Ein physischer Not-Stopp unterbricht Motorenergie ohne Softwareabhaengigkeit.
3. Ein Verbindungsverlust fuehrt spaetestens nach dem Firmware-Watchdog zu STOP.
4. Browser, PWA, Sprache und LLM besitzen keinen direkten Hardwarekanal.
5. Nur allowlist-basierte, validierte und zeitlich begrenzte Befehle erreichen
   das serielle Gateway.
6. Ein LLM ist nie Sicherheitsinstanz und erzeugt nie PWM-, Pin- oder Rohwerte.
7. Unbekannte, veraltete, doppelte oder fehlerhafte Befehle werden verworfen.
8. Nach E-Stop oder schwerem Fehler ist eine bewusste lokale Freigabe erforderlich.
9. Kamera und Mikrofon sind sichtbar, widerrufbar und nicht Voraussetzung fuer STOP.
10. Sicherheitsfunktionen bleiben offline und ohne MediaWiki erreichbar.
11. Das Roboternetz leitet keinen Verkehr in externe WLANs weiter.
12. Netzwerkstart, -abbruch oder -reconnect setzt niemals eine Bewegung fort.

## 2. Gestaffelte Stop-Kette

| Ebene | Ausloeser | Wirkung | Abhaengigkeit |
| --- | --- | --- | --- |
| Physisch | rastender Not-Stopp | trennt Motorenergie | keine Software |
| Funduino | Not-Stopp-Eingang, Watchdog, Parser-/CRC-Fehler, Brownout | ENA/ENB=0, Richtungen LOW | STATUS-only 1.2.0 kompiliert; Hardwaretest offen |
| Robot-Gateway | Lease abgelaufen, Client weg, Policyfehler, Dienstende | sendet STOP, entzieht Arm-Status | Gateway 1.2.0 getestet |
| PWA | Finger los, Tab unsichtbar, Netzwerkfehler, digitaler Stop | beendet Fahrstream | PWA 1.2.0 getestet |
| Sprachschicht | unsichere/mehrdeutige Absicht | kein Fahrbefehl; Rueckfrage | keine Motorautoritaet |

Der physische Not-Stopp bleibt wirksam, wenn alle anderen Ebenen ausgefallen sind.

## 3. Betriebszustaende

```text
BOOT_SAFE -> DISARMED -> ARMED_IDLE -> MOVING
    ^            |           |           |
    +------------+-----------+-----------+
                 STOP / Timeout / Fehler

Jederzeit: PHYSICAL_ESTOP oder DIGITAL_ESTOP -> ESTOP_LATCHED
ESTOP_LATCHED -> nur nach physischer Pruefung und bewusster lokaler Freigabe
```

- `BOOT_SAFE`: Ausgaenge werden vor Serial-/Netzinitialisierung deaktiviert.
- `DISARMED`: Statusabfragen erlaubt, Bewegung verboten.
- `ARMED_IDLE`: lokale Freigabe liegt vor, Sollgeschwindigkeit bleibt null.
- `MOVING`: nur solange frische, gueltige Lease-Befehle eintreffen.
- `ESTOP_LATCHED`: alle Bewegungen blockiert; Neustart allein loest nicht.

## 4. Dead-Man-, Heartbeat- und Timeout-Konzept

Vorgeschlagene Startwerte fuer Labortests, vor Realfahrt erneut zu bestaetigen:

- PWA sendet waehrend gedrueckter Fahrflaeche 10 Heartbeats pro Sekunde.
- Robot-Gateway vergibt genau einem Controller eine Fahr-Lease von hoechstens
  500 ms.
- Jeder serielle `DRIVE`-Frame enthaelt eine TTL von hoechstens 300 ms.
- Funduino stoppt bei mehr als 600 ms ohne gueltigen Fahr-/Heartbeat-Frame.
- Unabhaengig davon laeuft jeder einzelne Fahrbefehl nach hoechstens 300 ms aus.
- `visibilitychange`, `pagehide`, WebSocket-Close und Touch-Ende loesen sofort
  einen digitalen STOP aus; Firmware-Timeout bleibt das unabhaengige Ruecknetz.

Ein reconnect darf niemals automatisch die vorherige Bewegung fortsetzen.

Zusaetzlich zu allen Hardware-Nachweisen verlangt Version 1.2.0 einen lokalen,
expliziten Operator-Schalter `realMotorControlEnabled=true`. Der ausgelieferte
Wert ist `false`; ein einzelner Konfigurationswert kann die uebrigen Gates nicht
ersetzen.

## 5. Befehlsautoritaet

Prioritaet von hoch nach niedrig:

1. physischer Not-Stopp
2. Funduino-Sicherheitsfehler
3. digitaler E-Stop/STOP
4. lokaler Controller mit aktiver Lease
5. Sprachabsicht nach sichtbarer Bestaetigung
6. autonome Funktion nach gesondertem Sicherheitsgate

Gleichzeitige Controller fuehren nicht zu gemischten Befehlen. Der zweite Client
erhaelt nur Telemetrie, bis die bestehende Lease beendet wurde.

## 6. Gefaehrdungsanalyse

| Gefahr | Folge | Primaere Gegenmassnahmen | Gate |
| --- | --- | --- | --- |
| Unerwarteter Motorstart | Quetschung/Kollision | Hardware-Stop, Boot-Safe, Arm-Taster, Raeder frei | Phase 4 |
| WLAN-/Browserabbruch | Weiterfahrt | Leases, Gateway- und Uno-Watchdog | Phase 4/5 |
| L298N ueberlastet | Hitze/Brand/Ausfall | Stallstrom messen, Sicherung, Treiberbewertung | Hardware-Gate |
| Falsche 19-V-Verbindung | Zerstoerung/Brand | getrennte Domaenen, markierte Stecker, Vier-Augen-Pruefung | Vor Strom |
| 5-V-Unterversorgung hinter L298N | Stillstand, hoher Strom, unzuverlaessiger Start | dokumentierten Motorbereich und Treiberabfall pruefen; Gate sperrt Unterspannung | Hardware-Gate |
| Motor-Brownout/EMI | PC-/Uno-Reset | getrennte Versorgung, Sternmasse, Entstoerpruefung | Phase 3 |
| Manipulierte Webnachricht | unkontrollierte Fahrt | TLS, Pairing, Rollen, Schema, Rate-Limit, Lease | Phase 5 |
| LLM-Halluzination | falsche Aktion | LLM ohne Motorautoritaet, deterministischer Router | immer |
| Smartphone faellt | Verletzung/Defekt | mechanische Sicherung, Zug-/Falltest | Mechanik-Gate |
| Kamera-/Mikrofonmissbrauch | Datenschutzverletzung | sichtbare Aktivierung, lokale Verarbeitung, keine Medienlogs | Phase 6 |
| Akkuabschaltung | harter PC-Ausfall | Zustandsfreiheit, Schreibschutz/sauberes FS, Shutdown-Prozess | Phase 1 |

## 7. Ersttestregeln

- Keine Kinder, Tiere oder unbeteiligten Personen im Testbereich.
- Raeder angehoben und Fahrzeug mechanisch gesichert.
- Strombegrenzung auf den freigegebenen Wert.
- Physischer Not-Stopp in Handreichweite der beobachtenden Person.
- Zuerst `STATUS`, dann `STOP`, dann physischer E-Stop; erst danach ein einzelner
  Motor mit minimaler PWM und sehr kurzer TTL.
- Jede unerwartete Bewegung, Hitze, Geruch, Spannungseinbruch oder USB-Trennung
  beendet die Phase.

## 8. Datenschutz und Protokollierung

Erlaubte Betriebslogs:

- monotone Zeit, Dienstversion, pseudonyme Session-ID
- Verbindungsstatus, Sequenznummer, Befehlstyp, begrenzte Sollwerte
- Safety-Entscheidung, E-Stop-/Watchdogstatus, Sensor-/Spannungswerte
- Fehlerklasse ohne Prompt-, Audio-, Video- oder Personeninhalt

Nicht protokollieren:

- PIN oder Pairing-Token
- Audio, Transkript, Kamerabilder oder Chattext
- Namen, Accounts oder Schueler:innendaten
- WLAN-Passwort, SSH-Key oder API-Key

Logs rotieren lokal, sind nur fuer Admins lesbar und besitzen eine kurze,
dokumentierte Aufbewahrung.

## 9. Abnahme und Rueckfall

Jede Phase endet mit einem schriftlichen GO/NO-GO. Bei NO-GO:

1. physisch Motorenergie trennen,
2. Gateway deaktivieren,
3. `realMotorControlEnabled=false` wiederherstellen,
4. letzte bekannte sichere Firmware verwenden oder Funduino abziehen,
5. nur Simulation/PWA weiterbetreiben,
6. Ereignis ohne personenbezogene Inhalte dokumentieren.

Die Sicherheitsfreigabe ist widerrufbar und gilt nur fuer die dokumentierte
Hardware- und Software-Revision.
