Cutover 15.07. 21:26 (alle 14 Hermes-base_urls auf :9010, Backups). Abschlussbeweis 21:27: MC2-Restart mitten im Betrieb, Denkpfad :9010 antwortete durchgehend HTTP 200 - null Aussetzer. Reine Doku. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
16 KiB
UMBAUPLAN — Abschluss-Review 15.07.2026
Was das ist: Ergebnis des kompletten Projekt-Reviews (Repo + Box live + tagesaktuelle Recherche). DIE Arbeitsliste für die Zeit nach Claude. Leser: der User, die Box-Worker (über Queue-Karten) und Gemini/Antigravity (liest F:-Checkout). Regel: Erledigtes hier streichen. Neue Erkenntnisse einarbeiten, nicht daneben legen.
0 · IST-Befund (live verifiziert 15.07., 09:20–11:00)
Die Box ist gesund und die Autonomie-Kette ARBEITET nachweislich.
- Dienste: alle aktiv (mission-control-2, hermes-gateway, hermes-builtin-ui, mem0, voice, box-console, llama-swap). 8 Tage Uptime, 68 GB frei.
- Nacht-Crons 15.07. alle grün: Traum 03:15 · Selbst-Inventur 03:35 · Idle-Radar 03:45 · Karten-Gutachter 04:00 · Bagatell 04:10 · Chef-Gutachter 04:30 · Daily-Briefing 08:00 · Release-Radar Mo 05:15. Backups: mc2-backup 03:32 + PBS 03:50 gelaufen.
- Versionen: llama.cpp b9994 (Vulkan) · llama-swap v239 · Hermes 0.18.2 (+1 legitimer carried commit) · MC2 2.0.0-w8.
- Warm-Set schlank: Hirn 17,5 GB + embed 2 GB + reranker 2,2 GB ≈ 22 GB.
- Repo: lokal = Gitea = Box @ main. Live-Checkout wieder sauber auf
main. - Autonomie-Beweis der Nacht 14.07.: Idle-Radar erhob Journal-Befund (stop-sigterm-Timeout) → Decomposer zerlegte → werkstatt baute Restart-Skript+systemd-Override → betrieb testete live (~6 s Recovery) → done. Ohne Menschen, ohne Claude.
- ★ Nachmittags-Befund (Greenfield-Review + Live-Inspektion 15.07.): JEDER LLM-Aufruf der Box läuft durch den EINEN MC2-Prozess auf :9001 — Lucys Haupt-Hirn (
model.base_url, config.yaml ~Z. 430), alle auxiliary-Rollen (vision/curator/kanban_decomposer/triage_specifier), die komplettedelegation(jeder Worker-Auftrag) und 3 MCP-Server (MC_URL). Der am häufigsten neu gestartete Dienst ist zugleich die Wirbelsäule des gesamten Stacks; dasRestart=always-Override ist rückblickend ein Symptom dieser Kopplung. Konsequenz: Abschnitt 3b · UMBAU v3.
1 · Heute im Review erledigt (15.07.)
- ✅ Hermes-Quelle wieder jungfräulich: verwaister ~160-Zeilen-Patch in
gateway/platforms/api_server.pyentfernt (Bild-Beschreibung für Coder — war NIE aufgerufen = toter Code, wurde aber von jedemhermes updatemitgeschleppt = Konflikt-Risiko fürs kommende v0.19). Original archiviert:docs/archiv/hermes-api_server-vision-patch-verwaist.diff. - ✅ Idee daraus regelkonform portiert → Bild-Weiche v2 (MC2-Gateway): Bild-Request an Coder-Ziel bekommt Vision-BESCHREIBUNG injiziert und bleibt beim Coder (Screenshot-Debugging!); Fallback = alte Umleitung. Branch
wartung/bild-weiche-v2→ wartet als Karte auf Klick. - ✅ VL-8B-Leiche gefixt:
agents.vision.model: Qwen3-VL-8B-Instruct(Modell existiert seit 07.07. nicht mehr!) →vision-Alias, in Top-Level- UND beiden Profil-Configs (Backups*.bak-review-20260715). Gateway neu,hermes doctorgrün. - ✅ Live-Checkout aufgeräumt: zurück auf
main(stand auf verwaistem Branch), 2 stale Branches gelöscht, leerestate.db+ alterbackend/memory.pyentfernt. - ✅ 2 Mess-Karten in der Queue:
t_5ada48ea(Gemma-4-Hirn-Bench) +t_64a384b9(heavy-64k-Messung). - ✅ Blockierte Karte
t_8231d6b8analysiert: Arbeit ist fertig+live — Worker vergaß nur denkanban_complete-Aufruf. Abschluss = Sofort-Paket a).
2 · Konfig-Bewertung: Das ist GUT so (nicht anfassen)
| Bereich | Urteil |
|---|---|
| Modell-Kader (8 Modelle, klare Rollen, schlankes Warm-Set) | ✅ passt zur 122-GB-Box; Recherche 15.07.: kein Qwen-Coder-Nachfolger draußen, Coder-Verdikt hält |
| Vulkan/RADV statt ROCm | ✅ hält (ROCm auf gfx1151 weiter „Preview", llama.cpp-Issue #21284 offen) |
| Fundament-Fixes (concurrency 1, auto_decompose true, Specifier-Pins, 3 Hooks je Profil) | ✅ live korrekt verifiziert |
| Verdikte Mem0 / Telegram / Electron / pocket-Default / Hermes-Prompts englisch | ✅ bleiben |
| DeepSeek V4-Flash als Kandidat | ❌ zu groß (103–142 GB Quant) — passt nie neben das Warm-Set |
| systemd-Override Restart=always für MC2 | ✅ behalten (User-Entscheid 15.07.) — gute Appliance-Praxis |
3 · SOFORT-Paket — ✅ KOMPLETT ERLEDIGT (Stand 15.07. abends, live verifiziert)
a) ✅ Karte wartung/bild-weiche-v2 angenommen + E2E bestanden („Rot" vom Coder);
Bild-Weiche läuft inzwischen im eigenen mc2-gateway-Prozess (§3b P1), self-smoke
Check 5 spielt sie täglich durch. Test-Lehre: VL-Testbilder ≥256×256.
b) ✅ Karte t_8231d6b8 abgeschlossen.
c) ✅ sudo-Runde durch (verifiziert 15.07. abends): v1-Unit + /etc/systemd/system/ mission-control.service + /opt/mission-control restlos weg (Faden C14 ✓);
/usr/local/bin/llama-swap-warmup.sh (root, 15.07. 10:16) byte-identisch mit
deploy/warmup.sh ✓.
d) ✅ Daily-Briefing-Cron auf ∞ gestellt (läuft täglich 08:00, zuletzt ok).
3b · UMBAU v3 — Architektur-Feinschliff (NEU 15.07. nachmittags)
Woher: Greenfield-Gedankenexperiment („wie sähe ein Komplett-Rework aus?") + Live-Inspektion
der Box. Ergebnis: KEIN Rewrite (die Box wartet sich nachweislich selbst — während der Inspektion
lief Karte t_ab6754f1 und lud das Gemma-4-Bench-Modell), sondern vier Inkremente, die je für
sich Wert haben. Reihenfolge ist von der Topologie diktiert, nicht verhandelbar: P1 ent-riskiert
alles Weitere. Recherche-Verdikte dazu (15.07.): FastAPI bleibt (Litestar erwogen — Ökosystem/
Coder-Modell-Wissen gewinnen), React bleibt (Svelte/Solid schneller, aber irrelevant für
1-Nutzer-LAN), SSE ist 2026 der klare Dashboard-Standard (einweg, Auto-Reconnect, ~95 % der Fälle).
- P1 · Gateway-Auszug ✅ KOMPLETT (Stufe 1 deployt bf9fd80; Stufe 2/Cutover gefahren
15.07. 21:26 — alle 14 Hermes-base_urls auf :9010, Backups
*.bak-gwcut-20260715-212606): Der /v1-Datenpfad wird eigener Prozessmc2-gateway.service(Loopback :9010,Restart=always, gleicher Router-Coderouters/gateway_proxy.py, neuer Einstiegbackend/gateway_app.py). MC2 :9001/v1 wird dünner Roh-Weiterleiter (MC_V1_UPSTREAMin der Unit; Zeile entfernen = Rollback), damit LAN-Clients (IDE-Lane) nichts merken. Token-Zählung passiert genau EINMAL (im Gateway);token_stats.get_stats()lädt bei Fremd-Änderung per mtime nach (Steuerpult zeigt sonst eingefrorene Zahlen). Stufe 2 = Unabhängigkeit:deploy/gateway-cutover.shstellt ~/.hermes-Configs (Top-Level + beide Profile) von127.0.0.1:9001/v1auf127.0.0.1:9010/v1um (Backups,--revert, bewusst NICHT im deploy.sh — config.yaml ist Zwei-Schreiber-sensibel). Danach überlebt Lucys Hirn + die ganze Nacht-Autonomie jeden MC2-Neustart. Postcheck prüft den Gateway mit (nur wenn Unit enabled). Prüf-Fahrplan — ALLE VIER ✅: ① gw/health + Token-Call E2E · ② Repo-Wächter grün · ③ Bild-Weiche-E2E durch den neuen Prozess (dabei Socket-Reuse-Bug im Vision-Unteraufruf gefunden+gefixt d2398b3; self-smoke Check 5 prüft täglich; VL-Testbilder ≥256×256!) · ④ Stufe 2 gefahren + Abschlussbeweis bestanden (15.07. 21:27): MC2 wurde mitten im Betrieb neu gestartet, Lucys Denkpfad auf :9010 antwortete dabei durchgehend im Sekundentakt HTTP 200 — null Aussetzer. Das Steuerpult ist ab jetzt absturz-egal für Hirn, Crons und Worker. Rückweg bleibt:gateway-cutover.sh --revert. - P2 · Steward ✅ AKTIV (angenommen + deployt 15.07. ~14:48, bc69cf5; Steward läuft,
Sentry-Ticks auf MC2+Gateway+Voice journal-verifiziert): Re-Warm-Wächter, Health-Sentry und
Mem0-Dedupe laufen als eigener Dienst
mc2-steward.service(backend/steward.py, Restart=always) — unveränderte Loop-Module, reiner Konfig-Split (MC2-Unit setzt die drei ENABLED-Schalter auf 0; Zeilen entfernen = Rollback). Neu dadurch: Sentry überwacht erstmals auch MC2 SELBST + den mc2-gateway (MC_SENTRY_WATCH_MC2=1) und meldet ein totes Steuerpult per Telegram (Briefkasten-Abgabe an MC2 läuft per HTTP,MC_ANNOUNCE_HTTP); Warm-Nudge nach Config-Änderung kommt aus einem mtime-Watch (5 s) statt In-Process. Bewusst NICHT bewegt: reminders_loop (teilt Datei+CRUD mit /api/reminders — Zwei-Schreiber-Risiko) bleibt in MC2. Danach gibt es genau ZWEI Zeitplan-Systeme mit klaren Rollen: systemd-Timer (Box-Pflege) + Hermes-Crons (Agenten-Arbeit) — plus den Steward als dritten, eigenen Wächter-Prozess. Annahme-Hinweis (wichtig): P2 ändert deploy.sh selbst → nach dem Klick EINMALbash ~/mission-control-v2/deploy/deploy.shvon Hand nachlaufen lassen. Grund = Selbst-Reset-Falle: deploy.sh ersetzt sich beimgit resetmitten im Lauf selbst, bash liest dann einen alt/neu-Zeilen-Mix — genau daran hakte der P1-Deploy am 15.07. (daemon-reload + Gateway-Start fielen aus, Lucy bekam 502; Heilung war daemon-reload +enable --now mc2-gatewayvon Hand). P2 bringt den dauerhaften Fix mit (exec-Guard: Skript führt sich nach dem Reset einmal frisch neu aus) +TimeoutStopSec=5für den Gateway (Restarts rissen sonst 90-s-502-Fenster, weil uvicorn auf offene LLM-Streams wartet). Ab dem P2-Deploy schützt der Guard alle künftigen Deploys automatisch. - P3 · Steuerpult-Modernisierung (Kartenserie, reine UI/API-Arbeit, berührt nach P1 nie mehr
den Datenpfad): (a) EIN SSE-Eventstrom
/api/eventsersetzt die 53refetchInterval-Poller inqueries.ts; (b) TanStack Router → echte URLs (/modelle/coder,/auftrag/t_…), Deep-Links, Browser-Zurück; (c) TypeScript-Typen aus OpenAPI GENERIEREN (openapi-typescript) statt handgepflegtemapi.ts(stiller Drift-Fehlerherd). - P4 · State-Konsolidierung (optional, NUR bei Schmerz): die 10
mc2-*.json/jsonlin /srv/models → eine SQLite (WAL) mit Event-Tabelle (Chronik/Zeitmaschine = Abfragen statt Eigenbau; Backup = eine Datei). Nutzen real, aber Risiko/Aufwand hoch — bewusst hinten.
Bewusst NICHT geändert: FastAPI, React/Vite/Tailwind, kein Electron, kein Chat in MC2, LAN-Trust ohne Auth, Appliance-Philosophie (user-services, deploy.sh, Postcheck, Rollback).
4 · ROBUSTHEIT (Priorität 1 — Karten für die Queue)
- R1 · Worker-Protokoll-Erinnerung (klein):
box-steckbrief-inject.shum einen Satz ergänzen: „Am Ende IMMER kanban_complete oder kanban_block aufrufen — sauberes Text-Ende zählt nicht." Genau daran blockierte die Nacht-Karte. - R2 · Guard-Erweiterung systemd (klein, braucht User-Ja):
tabu-pfade-guard.pyum~/.config/systemd/user/erweitern. Die Nacht-Werkstatt hat den Override direkt scharf geschaltet — ging gut, widerspricht aber „jede Code-Zeile ist Klick-pflichtig". Installation künftig nur über angenommene Karte. - R3 · Hermes v0.19 kommt (Sammel-Release, ~660 PRs seit v0.18.0): Fangnetz existiert (autoupdate → doctor → postcheck → Auto-Rollback+Pin+Telegram). Quelle ist seit heute konfliktfrei. Nichts zu tun — nur wissen, dass die Meldung kommen wird.
- R4 · Orchestrator-Worktrees raus aus /tmp (klein):
/tmp/orch-kantenüberlebt keinen Reboot; Worktree-Basis nach~/.hermes/orch-worktrees/o. ä. - R5 · Runbook C13 (größter offener Robustheits-Batzen): 1-Seiter „Box tot → was drücken" + Bare-Metal-Bootstrap (docs/DISASTER_RECOVERY.md existiert als Konzept). Karten-Serie.
- R6 · Backup-Restposten: QNAP-/pve-root-Passwörter in Keepass verifizieren; Restore-Probe einmal fahren (PBS läuft, aber ungeprobt zurückgespielt).
5 · AUFRÄUMEN (Priorität 2)
- A1 · Alt-Docs (Bagatell-Klasse, Box darf selbst): README/STATUS/CUTOVER/HERMES_SETUP tragen Vor-Trennung-Stand (Faden C15).
- A2 · Lucy-Repo-Hygiene (PC-Karte über Lucy-Pipeline): 4 unkommittierte Dateien (Hybrid-TTS-Routing in App.tsx/useVoiceAgent/voice-core/kokoro_server) committen oder verwerfen — vorher prüfen, was live läuft; Saber-Altlasten löschen (XTTS-Datensatz-Verdikt: unbrauchbar); untracked venvs/Datasets ignorieren oder weg.
- A3 · Hermes-Home-Kleinkram:
hermes_cli/web_dist.bak-rootbuild/+.install_method(harmlos, bei Gelegenheit). - A4 · D16-Restposten: c) System-Logs ausbauen (Fehler-Filter) · e) Mem0-Dubletten automatisch statt Knopf · f) Lucy-Reste aus Web-UI + Voice-Sidecar-Diät. Alles einzelne Queue-Karten.
6 · FEATURES (Priorität 3)
- F1 · Bild-Weiche v2: gebaut, wartet auf Klick (Sofort-Paket a).
- F2 · heavy auf 64k (nach Messkarte
t_64a384b9+ User-Ja): danndelegation-Floor erfüllt → heavy als delegate_task-Ziel freischalten → Konzept-Fließband/Lucy nutzen heavy nativ statt worker.sh-Umweg. - F3 · Mini-Stimme v2 (AKTIV, User-Entscheid 15.07.):
- User: Colab-Volllauf (~3 h, Notebook
Lucy_Stimme_Training_v2.ipynbauf Desktop, Volltraining-Modus ist schon eingestellt) - Danach: Modell-Datei tauschen + Whisper-Rücktranskriptions-Test (der EINZIGE ehrliche Richter) — kann PC-Hermes über die Lucy-Pipeline
- A/B gegen pocket im Live-Gespräch → Default-Entscheid
- Zukunftsfaden v3: Qwen3-TTS-Instruct kann inzwischen Stil/Emotion bei geklonten Stimmen steuern — genau das „alles klingt gleich"-Problem. Neuer Datensatz mit Emotions-Instruktionen, sonst gleiches Rezept.
- User: Colab-Volllauf (~3 h, Notebook
- F4 · Gemma 4 26B-A4B als Hirn-Kandidat (nach Bench-Karte
t_5ada48ea): Community meldet ~110 t/s mit MTP-Head (vs. ~66 heute), multimodal (könnte Hirn+Augen VEREINEN), 256k Kontext. ABER: gemma-Vorgeschichte (Cache-Bug #21468, „Fix" unbestätigt), KV nur f16 (RAM!), mmproj×MTP ungeklärt. Nur mit Messbeweis + User-Ja — Hirn-Swap ist ein Groß-Ereignis mit Rollback-Plan.
7 · TEMPO (Priorität 4)
- T1 · ROCm-Recheck 20.–25.07. (Box-Reminder #3 existiert): Stand 15.07. hält Vulkan (tg-Führung bestätigt, #21284 weiter offen). Falls ROCm 7.13+ liefert: NUR Hybrid für heavy/coder-Prefill erwägen, Hirn bleibt Vulkan.
- T2 · hipEngine-Watch (Reminder #4 existiert): weiterhin praktisch Qwen3.6-only, gfx1151 nur „initial pass" — beobachten, nicht adoptieren.
- T3 · Faden 10 (spec-draft-Sweep): bleibt bewusst übersprungen (User 14.07.).
8 · Übergabe-Logik (wenn Claude weg ist)
- Neue Ideen → eine der drei Türen (Telegram / Lucy / MC2-Ideenfeld) → Queue → Karte → dein Klick. Die Kette ist E2E bewiesen.
- Wissen →
docs/wissen/(dieser Plan, STACK, FALLEN, GRENZEN, VERDIKTE) — Box liest~/mission-control-v2, Gemini liestF:\Coding Stuff\mission-control-2. GEMINI_BRIEFING.md existiert. - Pflege → Auto-Update-Timer mit Rollback+Pin; Selfsmoke täglich; Alarmkette Telegram.
- Evolution → Release-Radar (Mo) + Chef-Gutachter (täglich) + Traum (täglich) finden Chancen; Bench-Harnesses (brain-bench, model-bench) messen sie; du entscheidest per Klick.
- Notfall → Gemini/Antigravity als Review-Partner (RUNBOOK „Wann Gemini rufen").
9 · Recherche-Quellen (15.07.2026)
- Strix-Halo-Benchmarks/Grid: strix-halo-guide · llm-tracker Strix Halo
- ROCm-Prefill-Issue: llama.cpp #21284 (offen)
- Gemma 4: 26B-A4B auf Strix Halo · Cache-Bug #21468 · unsloth GGUF · AMD Day-0
- DeepSeek V4: unsloth Doku (103–142 GB → zu groß)
- Hermes v0.19: Releases
- hipEngine: shisa-ai/hipEngine
- Qwen3-TTS (Instruct/Emotion): Qwen-Blog · Emotion-Diskussion