From 82c50962bf3316b0b3a19c463adb52010b26eb0a Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Sun, 20 Sep 2026 19:18:38 +0200 Subject: [PATCH] Record verified router rollout and execute actual smoke probes --- README.md | 3 ++ docs/LIVE_STATE.md | 23 +++++---- docs/RECOVERY.md | 5 +- docs/ROUTER_AUDIT_20260920.md | 91 +++++++++++++++++++++++++++++++++++ smoke-test.sh | 2 +- 5 files changed, 111 insertions(+), 13 deletions(-) create mode 100644 docs/ROUTER_AUDIT_20260920.md diff --git a/README.md b/README.md index 6ea34f6..50ce3d2 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,9 @@ Athena ist die lokale Inferenzmaschine. Der Docker-Stack stellt Qwen über eine kleine OpenAI-kompatible Router-API bereit und übernimmt lokale Bild- und Sprachausgabe. **Hermes, OpenClaw und die Fach-MCPs laufen auf Unraid.** +Die [Router-Korrekturen vom 20. September](docs/ROUTER_AUDIT_20260920.md) +dokumentieren den ausgerollten Stand, reduzierte Statuslatenzen und Tests. + ## Aktueller Aufbau ### Athena diff --git a/docs/LIVE_STATE.md b/docs/LIVE_STATE.md index 630b831..33461ec 100644 --- a/docs/LIVE_STATE.md +++ b/docs/LIVE_STATE.md @@ -62,16 +62,19 @@ Spezialworkern bedeutet nicht automatisch einen zu entfernenden Testrest. ## Git und reproduzierbarer Stand -Der laufende Stack liegt unter `/opt/mike-ai/stack`. Sein Git-HEAD ist weiterhin -`276df0e` und damit älter als Doggo; `compose.yaml`, Dashboard und -`services/athena-realtime-voice/` liegen dort als Live-Änderungen. Die am -20. September geprüften Hashes von Compose, Dashboard, Dashboard-Test und -Voice-Bridge stimmen bytegenau mit diesem veröffentlichten Repository-Stand -überein. Ein frischer Clone liefert damit den Quellcode -und die Compose-Definitionen; er liefert weder lokale Secrets noch -Modellgewichte oder persistente Nutzerdaten. Vor einem Deploy ist die -Live-Konfiguration zu sichern und mit dem Checkout abzugleichen, statt den -laufenden Host blind zurückzusetzen. +Der laufende Stack liegt unter `/opt/mike-ai/stack`. Beim Router-Audit am +20. September wurde er auf den veröffentlichten Quellstand synchronisiert. +Die Funktionsänderungen sind in Commit `6071b1a` enthalten; anschließende +Dokumentationskorrekturen ändern keine Container. Die früheren Live-Anpassungen +an Compose, Dashboard und Voice-Bridge wurden bytegenau verglichen und in einem +lokalen Sicherungscommit erhalten. Controller und Router wurden gezielt ersetzt; +Medium und Gateway behielten ihre ursprünglichen Startzeiten. +Messwerte, Prüfungen und Rückfallstand stehen im +[Router-Audit](ROUTER_AUDIT_20260920.md). + +Ein frischer Clone enthält Quellcode und Compose-Definitionen, aber keine +lokalen Secrets, Modellgewichte oder persistenten Nutzerdaten. Lokale +Konfiguration vor jedem Deploy sichern; keinen laufenden Host blind zurücksetzen. Die Applio-UI hat einen eigenen Checkout `/opt/mike-ai/Mikes-Applio-UI`. Sein Git-HEAD `3a06139` ist älter als Doggo `eadbc15`. Die laufende diff --git a/docs/RECOVERY.md b/docs/RECOVERY.md index 4e51e98..a98b8a0 100644 --- a/docs/RECOVERY.md +++ b/docs/RECOVERY.md @@ -57,8 +57,9 @@ Die geprüften Quell- und Compose-Dateien liegen im Git; ein frischer Clone enthält jedoch keine Secrets, Modellgewichte, Trainingsdaten oder sonstigen persistenten Nutzerdaten. Die lokalen `/etc/mike-ai`-Werte und die Backup-Archive bleiben daher für eine vollständige Wiederherstellung nötig. -Die alten Live-Checkouts zeigen zudem ältere Commits als Doggo, obwohl die -geprüften Quelldateien inhaltlich übereinstimmen; siehe [Live-Stand](LIVE_STATE.md). +Der Athena-Stack wurde beim Router-Audit am 20. September mit dem +veröffentlichten Git-Stand synchronisiert; der separate Applio-Checkout bleibt +unverändert. Siehe [Live-Stand](LIVE_STATE.md). Vor einem Restore sind Archivinhalt, Aktualität und Kompatibilität der zugehörigen Restore-Skripte zu prüfen. Bestehende lokale Änderungen niemals blind überschreiben. diff --git a/docs/ROUTER_AUDIT_20260920.md b/docs/ROUTER_AUDIT_20260920.md new file mode 100644 index 0000000..1e2ae8c --- /dev/null +++ b/docs/ROUTER_AUDIT_20260920.md @@ -0,0 +1,91 @@ +# Router-Korrekturen vom 20. September 2026 + +Die Funktionsänderungen aus Commit `6071b1a` wurden auf Athena ausgerollt. +Nur Profile Controller und Router wurden neu erstellt. Medium, Qwen3-TTS, +Gateway, Netzwerk, Kernel und NVIDIA-Treiber blieben unverändert. + +## Änderungen + +- Die Modusanzeige liest einen gemeinsamen Controller-Snapshot statt 16 + identischer HTTP-Abfragen. Der Controller liest die Containerliste einmal + statt separat für alle acht Spezialdienste. Eine erstmalige Video-UI-Abfrage + kann zusätzliche Docker-Exec-Aufrufe erfordern; deren Fehler sind isoliert. +- `/profiles/status` liefert den aktiven Textprofilnamen unabhängig von den + Spezialworkern. Fehlende optionale Container erscheinen als `missing` und in + `worker_errors`, ohne den gesamten Status auf HTTP 503 zu setzen. +- Chat-Completions und andere profilbezogene Requests begrenzen die Wartezeit + auf den GPU-Koordinator mit `CHAT_WAIT_TIMEOUT` (Standard 300 Sekunden). + Bei Überschreitung folgt HTTP 503 mit `model_wait_timeout`. Das Zeitlimit + für einen anschließend gestarteten Profilwechsel bleibt `SWITCH_TIMEOUT`; + es handelt sich nicht um ein Gesamtzeitlimit für die Generierung. +- Der Chat-Pfad verwendet die bereits geprüfte Readiness-Antwort der Profilwahl + weiter. Bildvalidierung läuft vor dem GPU-Lock. Ultra lehnt Bilder vor einem + Profilwechsel mit HTTP 400 ab und meldet im nativen Katalog nur Texteingaben. +- Die Profilmatrix generiert nun auch die Vision-Fähigkeit des Routerregisters. +- Bereits laufende TTS-Container werden nicht erneut gestartet. Fehlende + Profilcontainer werden vor dem Stoppen anderer Dienste erkannt. +- Startup-Recovery akzeptiert denselben geprüften kleinen MTP-Kontextaufschlag + wie normale Profilwechsel und vermeidet damit unnötige Wiederherstellung. +- `manage.sh validate` und `manage.sh deploy` führen die schnellen, GPU-freien + Releaseprüfungen aus. `dev/check.sh --integration` ergänzt lokale Mock-Tests. +- Der Smoke-Test übergibt sein Python-Prüfprogramm jetzt mit `docker exec -i` + tatsächlich an den Container; ohne `-i` wurde der Here-Document-Inhalt nicht + ausgeführt. Die überholte Netzwerk-Testannahme wurde auf Dashboard und + Portainer begrenzt; der bestehende WebRTC-Namespace bleibt erhalten. + +## Messung auf Athena + +Je drei aufeinanderfolgende lesende Abfragen im Routercontainer, vor und nach +dem Deployment, keine parallele Chat-Anfrage während der Statusmessung: + +| Endpunkt | Vorher (ms) | Nachher (ms) | +|---|---|---| +| `/status` | 708,97 / 799,55 / 742,91 | 52,02 / 52,47 / 52,70 | +| `/ready` | 42,67 / 40,80 / 42,71 | 10,62 / 12,75 / 9,76 | + +Der Median von `/status` sank um rund 93 Prozent (Faktor 14,2). +Das belegt weniger Verwaltungsaufwand; es ist kein Benchmark für die +Token-Generierung oder die Leistung der GPUs. + +## Prüfung + +- 86 Python-Unit-Tests lokal erfolgreich, außerdem auf Athena erfolgreich. +- 68 lokale Integrationsprüfungen mit Mock-Modell-, Bild- und Sprachservern + erfolgreich, einschließlich Streaming und konkurrierender Profilanfragen. +- Profilmatrix und Compose-Konfiguration geprüft. +- Nach dem Deployment: Router und Controller gesund, `/health` und `/ready` + erfolgreich, keine Workerfehler, korrektes Ultra-Modellangebot. +- Ein echter Chat im bereits geladenen Medium-Profil antwortete mit `OK` + (zwei Ausgabetokens bei einem Limit von acht). +- Medium läuft weiter mit seinem Startzeitpunkt vom 19. September, + 19:41:46 UTC; Gateway unverändert seit 17. September, 09:05:07 UTC. +- Im geprüften Kerneljournal ab 20. September, 19:00 Uhr Ortszeit keine neuen + Kernel-Panic-, OOM-Kill- oder NVIDIA-Xid-Meldungen. + +Keine GPU-Stresstests, Profilwechsel-Benchmarks, Treiberänderungen oder +vollständige Wiederherstellung wurden ausgeführt. Bildmodell-Haltezeiten, +zusätzliche Parallelität und größere GPU-Speicherbudgets wurden nicht verändert. + +## Rückfall und Git-Stand + +Vorherige Live-Anpassungen wurden bytegenau mit dem veröffentlichten Quellstand +verglichen und in `safety/pre-router-audit-20260920` lokal gesichert. Der +kanonische Checkout `/opt/mike-ai/stack` wurde auf den veröffentlichten Commit +umgestellt; die frühere Abweichung von Live-Dateien und Git-HEAD ist damit für +diesen Checkout behoben. Der separate Applio-UI-Checkout wurde nicht verändert. + +Unter `/opt/mike-ai/safety/router-audit-20260920` liegen die geschützte +Quell-/Konfigurationssicherung, Image-IDs und das begrenzte Deploymentskript. +Die alten Router-/Controller-Images haben zusätzliche Rollback-Tags. Diese +Sicherung auf der Systemplatte ersetzt kein externes Backup. + +## Noch offene Betriebsfragen + +- Die externe Restic-Konfiguration fehlt weiterhin. Ziel und Zugang müssen + festgelegt werden; ein aktiver Timer allein ist kein funktionierendes Backup. +- `/data` war zu 93 Prozent belegt (rund 63 GiB verfügbar). Es wurden keine + Modelle oder Nutzerdaten gelöscht. Zusätzliche Modellkopien und größere + Benchmarks sollten erst nach einer gezielten Speicherprüfung erfolgen. +- Für weitere Inferenzoptimierung sind repräsentative Messungen von + Modellladezeiten, Cache-Treffern und Zeit bis zum ersten Token nötig. + Die bewährten GPU-Parameter blieben aus Gründen der Fernwartbarkeit erhalten. diff --git a/smoke-test.sh b/smoke-test.sh index 86e109f..5569661 100755 --- a/smoke-test.sh +++ b/smoke-test.sh @@ -67,7 +67,7 @@ for legacy in \ done pass "OpenWebUI, alte Hermes-Dienste und migrierte MCPs sind entfernt" -docker exec mike-ai-router python - <<'PY' >/dev/null +docker exec -i mike-ai-router python - <<'PY' >/dev/null import json import os import urllib.request