Commit Graph

150 Commits

Author SHA1 Message Date
Hitonabi 3cdd5cdd10 Auftragsbuch: Konzepte sichtbar, Modi unterscheidbar, Ideen weiterfuehrbar
Drei Luecken, die die neue Idee-Bahn unbrauchbar machten (User-Fund 21.07.):

1. Konzept unsichtbar. Der projektstart-Worker folgte dem Ende des
   konzept-fliessband-Skills (Kopie nach ~/konzepte + Telegram) statt seiner
   SOUL (Repo + KONZEPT.md) und schloss die Karte ab. Die Konzept-Ansicht sucht
   nur in Gitea -> "noch kein Repo hinterlegt", obwohl das Konzept fertig war
   (zweimal passiert: arm-ui, pomodoro-timer). konzept_of() faellt jetzt auf
   ~/konzepte/*.md zurueck (Pfad aus der Abschlussmeldung, sonst ueber den Titel
   geraten; streng auf dieses Verzeichnis begrenzt) und nennt die Quelle.
   Zusaetzlich sagen SOUL und Skill jetzt ausdruecklich, dass die Skill-Ablage
   fuer Kanban-Worker NICHT das Ende ist.

2. Modus nicht erkennbar. Idee und IDE-Projekt trugen dasselbe "IDE"-Abzeichen,
   Box-Karten gar keins. list_queue() liefert jetzt `art` (aus dem Body-Marker
   AUFTRAGS-ART: IDEE PRUEFEN), die UI zeigt BOX / IDEE / IDE mit Erklaerung —
   plus eine immer sichtbare Zeile, wann man welchen Modus nimmt.

3. Idee war eine Sackgasse. Neu: POST /api/ideen/weiterfuehren legt aus einer
   fertig durchdachten Idee eine IDE-Projekt-Karte an — verkettet an die Idee,
   mit dem fertigen Konzept als Vorlage ("denk es NICHT neu"), Titel aus der
   Konzept-Ueberschrift statt aus dem Rohtext. Liegt das Konzept schon in einem
   Repo, wird genau dieses weitergenutzt statt ein zweites anzulegen.
   In der UI sitzt der Knopf unter dem gelesenen Konzept (Ziel + Aufwand).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 08:40:16 +02:00
Hitonabi 7389386791 Vierter Modus 'Idee': Produkt-Idee durchdenken statt Projekt starten
Fuer echte Software-Ideen (z.B. Game-Server-Management), die weder MC2/Lucy-
Umbau noch schon ein Zed-Projekt sind. Volle Denk-Kaskade mit PRODUKT-Blick
(was, fuer wen, was gibt es schon, kleinster Wurf, was spricht dagegen) statt
Umsetzungs-Blick. Ergebnis: NUR KONZEPT.md — keine Roadmap, kein Geruest, keine
Bau-Aufforderung; der Commander entscheidet danach. Kein Ziel-Schalter (eine
Idee braucht noch keine Plattform). Eigene Farbe (sky), Button 'Durchdenken'.
Nebenbei: projektstart-SOUL.md ist jetzt versioniert + deploy-fest (lag bisher
nur auf der Box).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 22:57:06 +02:00
Hitonabi 656c5045da Infrastruktur-Kontext: LXC-Bestand nicht hartkodieren, nachschlagen lassen
Die fest eingetragene Container-Liste veraltet (106 homepage war schon weg) und
kostet im Steckbrief bei JEDEM Worker-Turn Kontext. Jetzt nur noch das Prinzip:
AI-Box = Werkbank, pve = separates Ziel-System — Bestand bei Bedarf per
'ssh pve pct list' nachsehen statt annehmen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 22:43:09 +02:00
Hitonabi 828dbe13b7 Infrastruktur: AI-Box vs Proxmox-Host klar trennen (Blindfleck)
Die IDE-Planer kannten den Proxmox-Host gar nicht — der Worker laeuft AUF der
AI-Box und nahm an, 'hier' sei auch das Ziel (User musste das muehsam erklaeren).
Steckbrief + IDE-Auftrag nennen jetzt beide Maschinen explizit: AI-Box
192.168.178.151 = Werkbank (nie Deployment-Ziel), Proxmox 'pve' 192.168.178.108
= separates Ziel-System mit den LXCs (100 adguard, 101 npmplus, 102 netbird,
103 pve-scripts-local, 104 gitea/.153, 105 PBS), per 'ssh pve' erreichbar, pct.
Live verifiziert (pct list, gitea-IP).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 22:39:59 +02:00
Hitonabi 82a3bc3c59 Ziel Docker = NATIVES Docker (keine LXC-Nesting-Konstrukte)
Korrektur: Docker-Wahl bedeutet normales, portables Docker nach Standard-Praxis
(Dockerfile, compose, ueber Gitea-/GitLab-Pipelines baubar) — nicht 'compose im
LXC mit Nesting'. Genau dann geht der Commander bewusst aus der LXC-Welt raus.
Infrastruktur-Steckbrief bleibt Kontext (lokal, kein Cloud/Bezahldienst), zwingt
aber nicht mehr LXC-Denke auf den Docker-Pfad.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 22:23:16 +02:00
Hitonabi d5da853db2 IDE-Intake: Ziel-Plattform waehlbar (LXC oder Docker) + Infrastruktur-Steckbrief
Zweiter, dezenter Schalter (nur bei IDE): Ziel = LXC (Standard) oder Docker.
Die Wahl fliesst als 'ZIEL-PLATTFORM'-Zeile in den Auftrag, dazu immer ein
Infrastruktur-Steckbrief (Proxmox/LXC, PBS-Backups, systemd, self-hosted Gitea,
alles lokal) — sonst plant jedes Modell nach Industrie-Default Docker/Cloud.
Skill: Ziel + Infrastruktur sind bindend; traegt die Wahl nicht, muss das
Konzept es ausdruecklich sagen statt sie still zu ignorieren.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 22:18:20 +02:00
Hitonabi cfcb5d2db5 IDE-Intake: Tiefe-Wahl (simpel/gruendlich) statt einem IDE-Knopf
Drei Modus-Knoepfe: Box · IDE: simpel · IDE: gruendlich. Die Wahl fliesst als
'AUFWAND (vom Commander gewaehlt): SIMPEL/GRUENDLICH'-Zeile in den Auftrag und
UEBERSTIMMT die Groessen-Selbsteinschaetzung von konzept-fliessband (simpel=2
Rollen/1 Runde, gruendlich=volle Kaskade). Skill: bei echter Ambition zur vollen
Tiefe (nicht 'im Zweifel kleiner'), explizite Commander-Wahl schlaegt Schaetzung.
Auto-Skalierung bleibt Fallback fuer Telegram/Lucy (ohne Knopf).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 17:04:19 +02:00
Hitonabi efca31c21f gitea-repo-create: Anlage-Token im ECHTEN User-Home finden (getent)
Worker-Subprozesse laufen mit abweichendem $HOME → das Skript fand das
write:user-Anlage-Token nicht und fiel aufs Push-Token (write:repository)
zurueck → 'Token hat fehlenden Scope', IDE-Vorbereiter blockte am Repo-Anlegen
(Pomodoro-Testlauf). Fix: echten Home aus /etc/passwd aufloesen (getent),
unabhaengig von $HOME.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 16:50:49 +02:00
Hitonabi a57e971607 konzept-fliessband: Aufwand zur Projektgroesse skalieren + Profil-Sync
Mini-Projekte bekamen die volle Kaskade (3-5 Rollen x bis 3 Runden = ~15-20
heavy-Aufrufe a ~90s → 35 min fuer einen Pomodoro-Timer). Neu: Rollen+Runden
skalieren mit Groesse (klein=2 Rollen/1 Runde, gross=volle Kaskade), frueher
raus bei WASSERDICHT. Deploy spiegelt den Skill jetzt auch in Profile, die ihn
haben (projektstart). Ergaenzend (Box-Config): projektstart-Manager coder->hermes,
damit heavy warm bleibt (coder 46G verdraengte heavy 60G bei jedem Aufruf;
hermes 22G persistent koexistiert mit heavy).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 16:45:10 +02:00
Hitonabi ff8125d2ac No-Progress-Bremse: worker.sh/fremdblick.sh ausnehmen (Fliessband-Motor)
konzept-fliessband/orchestrator rufen worker.sh pro Runde/Rolle wiederholt auf
(verschiedene Prompts, aehnliche Prosa) — die Bremse hielt das faelschlich fuer
eine Schleife und blockte (Pomodoro-IDE-Test lief 19 min dagegen an). Diese
Delegations-Helfer haben ihr eigenes Runden-Limit → von der Bremse ausnehmen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 15:47:45 +02:00
Hitonabi e3b3725b6f Hermes-Runtime-Patch-Traeger + Fan-out-/Kontext-Fixes
Neuer update-fester Patch-Traeger (deploy/hermes-patches/apply.py) haelt
MC2-eigene Fixes im Hermes-Quellcode, idempotent, in deploy.sh + postcheck
verdrahtet (Exit 10 = Gateway-Neustart, Exit 1 = rot):
 0001 needs_input/capability warten auf Commander (keine triage-Eskalation
      -> keine Muenz-Schleife)
 0002 Decompose erst bei Startreife (Parents done)
 0003 Orphan-Guard: Reaper killt Worker, deren Task nicht mehr running
      (mc2_kanban_reaper.py) -> max_in_progress leckt nicht
 0004 Projekt-/Repo-Kontext vererbt sich auf Kind-Karten
 0005 Etappen-Auto-Kette: Bulk-Root-triage-Karten einer Session verketten
Steckbrief: 'Repo fehlt -> selbst anlegen' + verschaerfte Kontext-Regel.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 15:22:07 +02:00
Hitonabi a1d7a4b6b9 mem0-Konsolidierung: monatlicher Lauf (3. des Monats)
Legt semantisch gleiche Fakten zusammen und loest Widersprueche (neuester gewinnt)
ueber /graph-Cluster + fast-Hirn (NoThink). Harte Leitplanken: pro Gruppe ueberlebt
immer ein Fakt, max 1 Update, LLM-Fehler = Gruppe unangetastet, Kappung pro Lauf.
Erster Live-Lauf 19.07.: 459 -> 420 Fakten (15 zusammengefasst, 39 geloescht).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 14:32:52 +02:00
Hitonabi 903f3bc074 Phase 2 Drei-Welten-Plan: No-Progress-Bremse + Betrieb-Playbook + mem0-Lern-Buendelung
- no-progress-bremse.py: generische, turn-uebergreifende Schleifenbremse (pre/post_tool_call);
  Muster-Hash statt hartkodierter Fehler-Strings, Selbst-Lernen via neue-signaturen.jsonl.
  Schliesst die Luecke der nativen guardrails (pro Turn, nur klassifizierte Fehler).
- ensure-profile-hooks.py: kann Eintraege in BESTEHENDE Event-Bloecke einfuegen
  (zweiter pre_tool_call-Key haette den Tabu-Guard lautlos verschluckt) + registriert Bremse.
- betrieb-playbook-Skill: SSH-/Deploy-Diagnose-Checklisten (Passphrase-Falle zuerst),
  Triage-Regel im Steckbrief-Hook; Skill wird in alle Profile gesynct.
- mc2-memory: Lern-Extraktion gebuendelt (4 Turns oder 180 s idle = EIN Lauf) statt pro Turn -
  Extraktion konkurrierte mit Lucys Hirn um die Slots.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 14:21:18 +02:00
Hitonabi 331aafa25d gitea-repo-create: dediziertes Anlage-Token (Push-Token bleibt unberuehrt)
Sicherer als .git-credentials zu ueberschreiben: Anlage-Token (write:user) aus
$GITEA_CREATE_TOKEN oder ~/.config/gitea/create-token; Push/PR-Token in
~/.git-credentials bleibt unangetastet (kein Bruch, falls das neue Token kein
write:repository hat). User/Host nicht-geheim mit Defaults.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 18:43:31 +02:00
Hitonabi cab748f32e Lucy kann Projekt-Repos anlegen (gitea-repo-create.sh) - PRIVAT-only
Lucke im "Projekte selbst starten"-Weg: Werkstatt konnte nur Branches in
bestehende Repos proposen, kein neues Projekt-Repo anlegen. Neues Skript:
POST /api/v1/user/repos, IMMER privat (Gitea ist oeffentlich erreichbar!),
auto_init + default main, Token aus ~/.git-credentials (nie ausgegeben),
Audit-Log + stiller Chronik-Spiegel je Anlage.
Braucht Token-Scope write:user (aktuelles Box-Token hat nur write:repository);
ohne das meldet das Skript GENAU, welches Token in Gitea zu generieren ist,
statt kryptisch zu scheitern. Token-Upgrade = Commander-Handgriff (Credential).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 18:29:40 +02:00
Hitonabi f21fe90090 feat(gitea): DISABLE_REGISTRATION=true & Security-Memo draft 2026-07-17 17:24:53 +02:00
Hitonabi 7b826f66c4 Venv-Audit: grep -c Zaehl-Bug (doppelte Zeile -> Rechenfehler)
Erstlauf-Befund: "grep -c ... || echo 0" haengte bei 0 Treffern eine zweite
Zeile an (grep -c druckt selbst schon "0") -> "integer expected" + kaputte
Summe. || echo 0 raus, Ergebnis auf Ziffern reduziert. Fund selbst war echt:
1 CVE in mem0, 27 Pakete veraltet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 17:03:10 +02:00
Hitonabi e556dcc853 Venv-Audit: uv-venvs haben kein pip - Inspektion via Audit-venv pip --path
Erstlauf-Befund: mem0-/voice-venvs sind uv-erstellt (kein bin/pip, kein
pip-Modul). Das Audit-venv prueft deren site-packages jetzt von aussen
(pip list --outdated/--format=freeze --path) - Dienst-venvs bleiben unberuehrt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 16:59:24 +02:00
Hitonabi b26fb40cbc Restore-Probe: --ignore-ownership (Erstlauf-Befund) + Tarball-Grep nur Dateien
Erstlauf fand echten Stolperstein: pxar-Restore extrahiert als User korrekt,
scheitert aber am chown root-eigener Dateien (llamaswap) -> Fehl-Exit trotz
intakter Daten. Restore-Aufrufe jetzt mit --ignore-ownership/--ignore-acls
(uns interessiert der INHALT); llamaswap-Fallback prueft den Inhalt statt des
Exit-Codes. Kern-Datei-Grep matcht nur noch Dateien, keine Verzeichnisse.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 16:55:28 +02:00
Hitonabi bc60c6fefc Betriebs-Luecken: Restore-Probe, Venv-Audit, Disk-Waechter, PC-Watch
Scope-Entscheid 17.07.: MC2 bleibt Box-Zentrale (KEINE Homelab-Zentrale) -
Infra-Radar (Proxmox/PBS/QNAP/Gitea) geht als eigenes Projekt an Lucys Queue.
- restore-probe.sh (Cron 1. d. M. 06:40, no-agent): stellt WIRKLICH wieder her -
  PBS-Canary aus hermes.pxar (selektiv via --pattern, sudo-frei ueber die
  User-Unit-Zugaenge) + Tarball-Probe + Frische-Check <36h; Erstlauf-Fallbacks
  (llamaswap.pxar / Kern-Datei) bis der Canary in den Sicherungen ankommt.
- venv-audit.sh (Cron 2. d. M. 06:40, no-agent): pip outdated + pip-audit-CVEs
  fuer mem0-/voice-venv ueber eigenes Audit-venv; Funde -> Kanban-Karte je Monat,
  Update bleibt Commander-Entscheid.
- self-smoke: Disk-Waechter (Check 7, Schwelle 85%, nennt die groessten Brocken).
- Trend-Radar-Watchlist: neue Typen github_release_major + pypi; Eintraege
  electron-major (PC-Shell auf 33!) und pocket-tts (PyPI-Versionswatch).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 16:50:48 +02:00
Hitonabi de21e1ac68 Pruefstand+Radar: MTP-Fairness, Tempo-Baseline-Refresh, Puls-Langzeit-Historie
Drei Luecken aus der Selbst-Review 17.07.:
1. MTP-Fairness: Kandidaten mit MTP-Kopf (Dateiname oder nextn-Tensoren im
   GGUF-Kopf) bekommen eine Zusatz-Tempomessung mit draft-mtp; Steckbrief
   rechnet best-of speed/speed_mtp - das Live-Hirn laeuft schliesslich MIT MTP.
2. Baseline-Refresh: baseline.json traegt jetzt den Engine-Build; weicht die
   installierte Engine ab (So-Auto-Update), misst der Pruefstand-Cron nur den
   Tempo-Teil aller Rollen neu (Geister-Zahlen-Schutz, Qualitaet bleibt gueltig).
3. Langzeit-Historie: Puls wird als JSONL angehaengt statt ueberschrieben;
   Radar vergleicht zusaetzlich gegen ~8 Wochen zurueck und meldet
   SCHLEICHENDE REGRESSION, die woechentlich unter der 10-%-Schwelle bleibt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 16:28:27 +02:00
Hitonabi 9c03316755 Trend-Radar: mechanische Amtsinhaber-Sperre (Testlauf-Befund 17.07.)
Der erste echte Radar-Lauf schlug prompt das eigene Hirn-Repo
(unsloth/Qwen3.6-35B-A3B-MTP-GGUF) als hermes-Kandidat vor - Zitat-Gate korrekt
passiert, aber Repackaging des Amtsinhabers ist nie ein Kandidat. Jetzt doppelt:
Raster-Regel + mechanischer Block ueber Modellnamen-Token im Gate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 15:47:28 +02:00
Hitonabi f5e362e902 Pruefstand: Vision-Checkliste beugungsfest (Baseline-Befund 17.07.)
Beide Augen-Modelle beschrieben das Testbild korrekt ("in der oberen linken
Ecke"), scheiterten aber an undeklinierten Pflicht-Stichworten ("obere linke").
Gruppen um Beugungs-Stämme ergänzt (oberen link / unteren recht).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 15:29:50 +02:00
Hitonabi 2be599bfe9 Pruefstand-Harness: Think-Blöcke strippen + Budgets rauf (Baseline-Befund 17.07.)
Rohe :8080-Aufrufe an Denk-Modelle (Qwen3.6) liefern <think>-Monologe im content:
der Deutsch-Richter benotete Grübel-Text (Note 1-3), das Zitat-Gate suchte darin,
und 900 max_tokens gingen komplett fürs Denken drauf (leere Antworten).
- inhalt_von() entfernt <think>-Blöcke; abgeschnittenes Denken = ehrlich leer
- recherche 1200->2800, deutsch 900->2400 max_tokens (Denkbudget einpreisen)
- Fehlschläge speichern jetzt antwort_auszug (Diagnose ohne Nachstellen)
- pv-anteil: überstrenges Pflicht-Stichwort 412 entfernt
Mock-E2E nach Patch: coding 6/6, recherche 4/4; Think-Strip-Unit-Probe grün.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 15:09:06 +02:00
Hitonabi b0dce954e9 Trend-Radar + Pruefstand: Box beobachtet Modell-/Engine-Trends und testet Kandidaten selbst
- trend-radar-feed.sh (Cron Sa 05:15): Live-Puls ALLER Rollen mit Vorwochen-Vergleich,
  Engine-A/B gegen neuen llama.cpp-Build (Fruehwarnung vor So-Auto-Update), mechanische
  Watch-Liste (MMQ-Issue, ROCm-Releases, Community-Grid), HF-Kandidaten-Suche mit
  Zitat-Gate -> max. 1 Pruefstand-Kandidat/Woche
- pruefstand.sh + harness.py (Cron So 01:00, no-agent): volles Programm je Kandidat -
  6 Coding-Aufgaben mit echten Unit-Tests, 4 Agenten-Aufgaben (Tool-Loop + Endzustand),
  4 Recherche-Fragen mit Zitat-Ehrlichkeits-Gate, Deutsch-Richter, Vision-Testbild,
  Tempo kurz+lang; Baseline der Amtsinhaber als Vergleichsmassstab
- Leitplanken (User-Entscheid 17.07.): Download-Deckel 35 GB (drueber -> Karte),
  1 Kandidat/Woche, Cache mit Auto-Aufraeumen, RAM-/Platz-Wache, Bench-Port :5899,
  Radar/Pruefstand EMPFEHLEN nur - Rollen-Wechsel bleibt Commander-Klick
- E2E bewiesen (Mock-LLM): coding 6/6, recherche 4/4 inkl. Zitat-Gate, Agent-Roundtrip,
  Richter-Parsing; Suiten-Selbsttest mit Referenzloesungen 6/6

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 14:57:07 +02:00
Hitonabi 31fde2a68e self-smoke/postcheck: Browser-Tool-Check + Selbstheilung (agent-browser-Link-Falle, Vorfall 16.07.)
Hermes' browser_navigate starb still als "Failed to open <url>": das
Hermes-Update 15.07. 23:53 (npm ci --workspace) bog ~/.local/bin/agent-browser
per postinstall auf node_modules/ um und loeschte das Paket im selben Lauf
wieder -> toter Symlink. Kein fehlender MCP/Skill.

Neu, damit die Box das OHNE Zuruf erkennt und heilt:
- self-smoke.sh Check 6: agent-browser --version; bei totem Link auf das
  npm-global-Binary (~/.local/lib/node_modules/...) zurueckbiegen und
  hermes-gateway/hermes-builtin-ui try-restarten (browser_tool cached
  "nicht installiert" pro Prozess). Selbstheilung wird als Info gemeldet
  (neuer HEALED-Kanal), nicht als Alarm; unfixbar -> Rot wie gehabt.
- hermes-postcheck.sh: gleicher Check direkt nach jedem Hermes-Update,
  denn genau dort entsteht der Bruch.

Heil-Logik isoliert auf der Box getestet (Fake-HOME + systemctl-Stub):
toter Link -> geheilt+Restart; danach PASS ohne Restart; Binary weg -> FAIL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 11:38:15 +02:00
Hitonabi 77dfac79ee selbst-inventur: Diff-Filter warf alle Bullet-Zeilen weg (immer "0 Aenderungen")
Steckbrief-Zeilen sind Bullets ("- ..."), im Diff also "+- "/"-- " — der alte
Filter ^[+-][^+-] (gedacht gegen +++/----Kopfzeilen) verschluckte damit jede
echte Aenderung. Jetzt werden nur die Datei-Kopfzeilen ausgefiltert.
Beweis 16.07.: realer Nacht-Diff hatte 7 Aenderungen, Meldung sagte 0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 11:04:58 +02:00
Hitonabi fa22435d7c tabu-pfade-guard: V16 — relative Pfade bei riskantem cwd blocken (Vorfall 16.07.)
Nacht-Worker t_7a05992a ersetzte 03:59 den Live-Checkout mit cwd=$HOME und
RELATIVEN Pfaden (rm -rf mission-control-v2 && git clone ...) — der Guard
prueft beim terminal-Tool nur den Kommandotext auf home-verankerte Formen
und liess das durch (.venv weg -> Gateway 203/EXEC-Crash-Loop).

Drei Stopfen:
(1) cwd IN einem Tabu-Pfad -> jede Schreib-Operation geblockt (Lesen frei).
(2) git clone/init mit Ziel direkt in $HOME geblockt (Worker klonen im
    Task-Workspace); explizites Ziel ausserhalb $HOME bleibt erlaubt.
(3) cwd == Vorfahr eines Tabu-Pfads -> relative Nennung des Tabu-Ziels
    zaehlt als Treffer; Lookarounds lassen den Workspace-Klon-Pfad
    (.hermes/kanban/workspaces/<id>/mission-control-v2) weiter durch.
Nebenbefund zu: clone fehlte in der git-Schreibliste (a) — auch
git clone URL ~/mission-control-v2 war vorher ungeblockt.

Lokal bewiesen: 35/35 Payload-Faelle (Vorfalls-Kommando geblockt,
Workspace-Arbeit/Lesen frei, Alt-Verhalten regressionsfrei).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 11:02:35 +02:00
Hitonabi 87670dd3a6 self-smoke Check 5: Bild-Weiche v2 taeglich aktiv durchspielen
Der Pfad (Bild an coder -> Vision beschreibt -> Coder antwortet) brach am
15.07. zweimal still: erst als nie verdrahteter Patch in der Hermes-Quelle,
dann am gepoolten Keep-Alive-Socket nach Modell-Swap (:9010). 256x256-Rot
als Testbild - Winzbilder liefern VL-Halluzinationen (Kapuzinerkresse).
Nebeneffekt: waermt coder+vision morgens vor. Vorschlag der P2-Session.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 15:58:52 +02:00
Hitonabi 5dde4c9f5c Box kann jetzt Frontend bauen: Node LTS sudo-frei installiert, Hook-Wahrheit umgedreht
User-Entscheid 15.07.: 'Node sollte auf jeden Fall auf die Box - generell
alles, um sich selbst zu warten.' Node v24.18.0 (LTS) liegt unter
~/.local/node (offizielles Tarball, KEIN sudo), Symlinks in ~/.local/bin,
das im PATH des hermes-gateway (= aller Worker) bereits enthalten ist.
Bau-Beweis auf der Box: frischer Klon, npm ci + npm run build -> dist in
~4 s. Der Steckbrief-Hook weist Worker jetzt an, dist selbst zu bauen und
mitzucommitten (vorher: 'Box kann nicht bauen'-Vermerk).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 14:51:04 +02:00
Auftragsbuch bc69cf5cc9 Auftragsbuch: 'feature/p2-steward' angenommen (Ein-Klick-Gate) 2026-07-15 14:47:55 +02:00
Hitonabi 7223ca96c1 Deploy-Robustheit: Selbst-Reset-Guard + TimeoutStopSec=5 (Lehren P1-Deploy 15.07.)
1) deploy.sh fuehrt sich nach dem git reset einmal frisch neu aus (exec-Guard,
   Env-Marke MC2_DEPLOY_REEXEC): der Reset ersetzt die laufende Datei, bash las
   einen alt/neu-Zeilen-Mix — beim P1-Deploy fielen so daemon-reload und der
   mc2-gateway-Start aus (Lucy 502, Heilung von Hand).
2) mc2-gateway.service TimeoutStopSec=5: uvicorn wartete beim Stop auf offene
   LLM-Streams (default 90 s SIGKILL-Fenster ohne Listener = 502-Fenster bei
   jedem Deploy-Restart, live gemessen 14:29->14:31). Stateless Proxy, Clients
   retrien — hart nach 5 s ist verlustarm.
UMBAUPLAN: Annahme-Hinweis fuer P2 (einmal deploy.sh von Hand nachlaufen lassen,
weil der Guard erst MIT diesem Deploy an Bord kommt).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 14:47:35 +02:00
Hitonabi 3cf111d973 Kontext-Limit sichtbar machen: Gateway-Warnung bei finish_reason=length + Etappen-Regel
User-Wunsch 15.07. ('es sollte eine Warnung geben - Kontext ist nicht
unendlich'): 4 P3-Worker starben still an finish_reason=length.
- Gateway erkennt abgerissene Antworten (Stream-Chunk + Non-Stream) und
  meldet je Modell max. alle 10 min in den Briefkasten (silent -> Chronik),
  Zustellung per MC_ANNOUNCE_HTTP ans Steuerpult (Store bleibt Ein-Schreiber).
- Steckbrief-Hook: KONTEXT-BUDGET & ETAPPEN-REGEL - gezielt lesen, grosse
  Aufgaben in Etappen schneiden (kanban_create/complete mit Plan) statt
  am Limit zu sterben.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 14:43:36 +02:00
Hitonabi 3468bc9c80 Steckbrief-Hook: Repo-Wegweiser + Frontend-Wahrheit (kein node auf der Box)
User-Beobachtung 15.07.: jeder Worker kartiert das Repo neu (ls-Ketten,
geratene Pfade wie 'read queries.ts -> not found'). Der Hook sagt jetzt
jedem Worker-Turn, WO was liegt (Router/Services/Views/queries.ts/nav) und
die dist-Wahrheit: Box hat KEIN node/npm -> frontend/dist ist auf der Box
nicht baubar, Vorschlaege muessen das ehrlich vermerken.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 14:36:51 +02:00
Hitonabi a9c0239f8a UMBAU v3 P2: Steward — Waechter-Loops als eigener Prozess mc2-steward
Re-Warm, Health-Sentry und Mem0-Dedupe laufen als eigener Dienst
(backend/steward.py, Restart=always) statt im Steuerpult-Lifespan:
MC2-Neustarts nehmen den Waechtern nicht mehr Timing/Flanken-Gedaechtnis,
und der Sentry ueberwacht erstmals MC2 SELBST + mc2-gateway (Telegram
funktioniert auch bei totem Steuerpult; Briefkasten-Abgabe per HTTP via
MC_ANNOUNCE_HTTP, Store bleibt exklusiv beim MC2-Prozess). Warm-Nudge
nach Config-Aenderung via mtime-Watch (5 s) statt In-Process-Signal.
Reiner Konfig-Split: MC2-Unit setzt die drei ENABLED-Schalter auf 0,
Zeilen entfernen = Rollback. reminders_loop bleibt bewusst in MC2
(teilt Datei+CRUD mit /api/reminders, Zwei-Schreiber-Risiko).

Stellt ausserdem den beim Karten-Neuaufbau (ccc9a25) verlorenen
stack-postcheck-Block fuer mc2-gateway wieder her (+ Steward-Check 4c).

Baut auf feature/von-allein-und-gateway-p1 auf; Annahme schliesst P1 ein.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 14:15:36 +02:00
Hitonabi ccc9a25a25 UMBAU v3 P1: Gateway-Auszug — /v1 wird eigener Prozess mc2-gateway (:9010)
ACHTUNG: Annahme AKTIVIERT die Stufe 1 (deploy.sh installiert
mc2-gateway.service + setzt MC_V1_UPSTREAM in der MC2-Unit; Health mit
Kaltstart-Retry bis 12s, dann hart rot -> Runner-Rollback greift).
MC2 :9001/v1 wird duenner Roh-Weiterleiter, LAN-Clients merken nichts;
Rollback = MC_V1_UPSTREAM-Zeile aus der Unit entfernen. token_stats
laedt bei Fremd-Aenderung per mtime nach (Gateway schreibt, Steuerpult
liest). UMBAUPLAN Abschnitt 3b dokumentiert P1-P4. Stufe 2 (Lucy direkt
an :9010, ueberlebt MC2-Neustarts) = deploy/gateway-cutover.sh, separat.

Neu aufgesetzt 15.07. auf aktuellem main (a3d9c74): die urspruengliche
Karte trug die inzwischen veraltete Von-allein-View doppelt - die ist
laengst auf main live. Inhalt = P1 der Parallel-Session, unveraendert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 10:51:51 +02:00
Hitonabi 734cafd98f R5: git-init-Orphans mechanisch verhindern (Guard-Block + Orphan-Gate)
Drei Naechte in Folge bauten Worker git-init-Branches ohne gemeinsamen
Ursprung mit main (cleanse-skill-index 12.07., skill-kanten-generator
13.07., blogwatcher-logging ~14.07.) - bei der Annahme technisch tot,
Nacht-Arbeit verloren. SOUL-Prosa allein driftet (Meta-Lehre Fallstrick-
Audit) -> jetzt mechanisch: tabu-pfade-guard blockt 'git init' im
Kanban-Workspace hart; pre-verify-gates prueft VOR dem Fertigmelden
merge-base gegen origin/main (Orphan-Gate ROT).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 10:25:03 +02:00
Hitonabi abc8a365d2 Review-Haertung R1/R2/R4 + Repo-Waechter (Vorfall verlorener Merge 12.07.)
R1: Steckbrief-Hook erinnert Worker an kanban_complete/kanban_block-Pflicht
    (Nacht-Karte 14.07. blockierte trotz fertiger Arbeit am fehlenden Aufruf).
R2: tabu-pfade-guard sperrt ~/.config/systemd/user fuer Worker — Unit-/
    Override-Dateien nur noch ueber angenommene Karte.
R4: Orchestrator-/Wartungs-Worktrees von /tmp nach ~/.hermes/worktrees
    (ueberleben Reboot, keine kaputten Registrierungen).
Neu: self-smoke Check 4 'Repo-Waechter' — Box-main mit Commits, die origin
    fehlen, loest Alarm aus (so ging die angenommene Karte
    wartung/lucy-annahme-fixes am 12.07. still verloren; am 15.07. als
    rescue/-Branch gerettet und wieder gemergt).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 10:04:16 +02:00
Hitonabi 960bda6021 fremdblick.sh: Prosa-Default 2200 -> 4000 Tokens (Reasoning-Modell-Headroom)
GLM-4.7-Flash (Prosa-Kritiker) ist ein Reasoning-Modell und verbrennt real ~2000
Tokens im reasoning_content, bevor das Urteil in content landet (verifiziert 14.07.).
Bei 2200 schnitt es Gefahr mitten im Denken ab -> leeres content -> FEHLGESCHLAGEN;
das traf die naechtlichen Kritiker mit Default-Budget (Traum-Gate etc.). Der
Release-Radar ueberschreibt ohnehin auf 4500; der Code-Modus (Qwen-Coder, 1600) ist
kein Reasoning-Modell und bleibt unberuehrt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 10:54:07 +02:00
Hitonabi 5f6e3c77d4 Konzept-Fliessband: Skill fuer wasserdichte Konzepte (heavy denkt, Skeptiker haertet)
Neuer Skill konzept-fliessband: rohe Idee -> mehrere Fach-Rollen (heavy/gpt-oss-120b
waehlt den Cast) schaerfen ein Konzept in Runden, ein Advocatus Diaboli (fremdblick/GLM)
haertet bis wasserdicht (max 3 Runden) -> Konzept-Dokument als Vorlage fuer projekt-start
in Hermes Desktop. Propose-only, KEIN Code.

Behebt das delegate_task=coder-Loch: Konzept-/Recherche-Arbeit lief bisher stumm auf dem
Code-Modell, weil natives delegate_task hart auf delegation.model=coder verdrahtet ist und
pro Aufruf kein Modell waehlen kann.

Gehaertet gegen die Reasoning-Modell-Token-Falle (heavy & GLM antworten erst in
reasoning_content): WORKER_MAXTOK=6000 / FREMDBLICK_MAXTOK=4000 + Kaltstart-Retry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 10:30:13 +02:00
Hitonabi faf25bf76c Faden 8+5-Fix: Worker-Scope korrigieren + Profil-Hooks reproduzierbar
Zwei zusammenhaengende Bugs, beim echten Worker-Test entdeckt:

1) HOOKS FEUERTEN FUER WORKER NIE. Kanban-Worker laufen unter IHREM Profil
   (HERMES_HOME=~/.hermes/profiles/<name>) und lesen dessen config.yaml, NICHT
   die Top-Level ~/.hermes/config.yaml. Die neuen Hooks waren nur oben
   registriert -> fuer Worker inaktiv. FIX: ensure-profile-hooks.py registriert
   pre_llm_call + pre_tool_call in jeder Worker-Profil-config (idempotent,
   validiert, Backup); deploy.sh ruft es je Profil auf -> reproduzierbar.

2) FALSCHER SCOPE. Beide Hooks scopeten auf task_id == t_<hex>. Aber Worker
   tragen als effective_task_id den SESSION-Zeitstempel (z.B.
   20260713_224206_267304), NICHT die Kanban-t_-ID -> der Check schlug immer
   fehl -> box-steckbrief injizierte nie, tabu-guard liess alles durch.
   FIX:
   - tabu-pfade-guard.py: Schutz jetzt UNBEDINGT (kein Task-Scope) - kein
     legitimer Hermes-Agent-Flow schreibt je in Live-Checkout/Hermes-Quelle
     (Werkstatt arbeitet im Workspace-Klon, Wartung ist Shell nicht Agent-Tool).
   - box-steckbrief-inject.sh: Scope jetzt cwd unter ~/.hermes/kanban/workspaces/
     (zuverlaessiger Worker-Signal; Lucy/Voice/CLI laufen nie dort).

Verifiziert: echter betrieb-Worker versuchte in den Live-Checkout zu schreiben
-> GEBLOCKT, Datei nicht erstellt, TABU-Meldung im Log. 26 Guard-Unit-Faelle gruen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 22:51:47 +02:00
Hitonabi 5a236b4b28 Faden 8: Tabu-Pfade hart sperren (pre_tool_call-Guard)
Fallstrick #2: Worker koennen in die falsche Ebene wandern - Patches im
Live-Checkout ~/mission-control-v2 ablegen oder die Hermes-Quelle
~/.hermes/hermes-agent anfassen. Hermes' native is_write_denied deckt diese
Pfade NICHT ab (nur Credentials/System, live geprueft).

deploy/agent-hooks/tabu-pfade-guard.py (neu): pre_tool_call-Hook, blockt
Schreib-Operationen (write_file/patch + terminal git-write/sed-i/redirect/rm)
auf den home-verankerten Live-Checkout und die Hermes-Quelle - NUR fuer echte
Kanban-Worker (task_id t_<hex>); Lucy/CLI (UUID) = No-op (~15 ms). Der
Workspace-KLON (<workspace>/mission-control-v2) bleibt beschreibbar (nur der
home-verankerte Pfad ist tabu) -> legitime Worker-Arbeit ungestoert. Lesen
erlaubt. 25 Faelle gruen (Block + Allow, inkl. git log 2>/dev/null, Redirect
nach /tmp, Workspace-Commit). deploy.sh synct den Hook (cmp-Guard).

Registrierung in ~/.hermes/config.yaml (pre_tool_call) einmalig von Hand.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 22:26:29 +02:00
Hitonabi 967225b1d7 Faden 7: betrieb-Profil (Ops/Bench/Mess-Worker) - SOUL + deploy-Sync
Fallstrick #1: Mess-/Bench-/Verify-Aufgaben landeten auf default (Lucys
nicht-technische Persona) und flailten. Neues Worker-Profil betrieb (analog
werkstatt): misst/bencht/diagnostiziert/verifiziert auf der LEBENDEN Box,
aendert aber nichts (kein Restart/Config/Deploy).

deploy/betrieb-SOUL.md: Ops-Leitplanken - nur lesen am Live-System, kennt die
Werkzeuge (Health-curl, systemctl --user status MIT XDG_RUNTIME_DIR, bench-
Skripte), Bench-Vorsicht (kein OOM, Lucys Warm-Set schuetzen), Verifizieren-
vor-Behaupten, falsche Ebene -> werkstatt/default. deploy.sh synct sie (guarded
auf existierendes Profil).

Profil selbst + Modell (hermes) + Routing-Descriptions werden einmalig auf der
Box angelegt (hermes profile create betrieb --clone-from werkstatt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 21:44:07 +02:00
Hitonabi e7f143823e Faden 6: Grenzen-Landkarte (was gehoert wohin) + Worker-Hinweis
Verhindert das "Chat-in-MC2"-Muster und Ebenen-Verwechslungen: neue
docs/wissen/GRENZEN.md mappt die fuenf Flaechen (MC2=Steuerpult,
Lucy=Chat/Stimme, Hermes=Fundament/Quelle-tabu, Telegram, Hermes-Desktop)
mit "gehoert hin / gehoert NICHT hin", den Code-Ebenen-Grenzen und einer
"ich will X bauen - wohin?"-Entscheidungshilfe + roten Linien.

Eingewoben: README-Lesereihenfolge, ARBEITSWEISE (Rollen-Abgrenzung zeigt
auf GRENZEN + "MC2 = Steuerpult, kein Chat"), und der pre_llm_call-Worker-
Hook (box-steckbrief-inject.sh) gibt jedem Worker die Kurz-Grenzen inline
(MC2=Steuerpult/kein Chat-UI, Lucy=Chat, Hermes-Quelle tabu) + Zeiger auf
GRENZEN.md. Verifiziert: Hook injiziert 1236 Z inkl. Grenzen, Lucy-UUID No-op.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 21:29:33 +02:00
Hitonabi 4e8f0b91dd deploy: Agent-Hooks nur bei echter Aenderung kopieren (cmp-Guard)
Ein blindes cp aktualisiert die mtime auch bei identischem Inhalt und loest
dadurch bei jedem Deploy die harmlose "script modified since approval"-Warnung
von `hermes hooks doctor` aus. cmp -s ueberspringt unveraenderte Hooks.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 21:21:46 +02:00
Hitonabi 69537de304 Faden 5: Scope-Gate auf Kanban-Muster t_<hex> verschaerfen
Wichtige Korrektur vor dem Scharfschalten: Hermes setzt
effective_task_id = task_id OR uuid4() (agent/turn_context.py:216) — Lucys
interaktiver/Voice-Chat laeuft also mit einer NICHT-leeren UUID-Ersatz-task_id.
Der urspruengliche "task_id nicht leer"-Check haette damit auch Lucy getroffen
(Persona-/Latenz-Schaden). Fix: nur injizieren, wenn task_id dem echten
Kanban-Muster t_<hex> entspricht; UUIDs (mit Bindestrichen, nie t_-Prefix)
fallen auf No-op. Verifiziert: t_-ID -> injiziert, UUID/leer/non-t_ -> No-op.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 21:18:16 +02:00
Hitonabi c81523c0f4 Faden 5: Box-Selbstwissen mechanisch in jeden Kanban-Worker (pre_llm_call-Hook)
Fallstrick #1 behoben: Ops-/Mess-/Verify-Aufgaben landen oft auf `default`
(= Lucys Persona, "nicht technisch, keine Pfade/Versionen") und flailen, weil
sie llama-swap :8080 & Co. nicht kennen. Nur `werkstatt` hatte Box-Wissen.

deploy/agent-hooks/box-steckbrief-inject.sh (neu): pre_llm_call-Hook, haengt
eine kompakte Box-Orientierung ephemer an die User-Message JEDES Kanban-Workers
(egal welches Profil) — aber NUR wenn eine task_id gesetzt ist. Lucys
interaktiver/Voice-Chat hat keine task_id -> sofortiger No-op (7 ms gemessen),
kein Persona- oder Latenz-Eingriff. Inhalt: Identitaet + Modell-Endpunkte
(llama-swap :8080, MC2 :9001/v1, gateway :8642, mem0 :8765) + Tabu-Live-Checkout
+ Zeiger auf den vollen Selbst-Steckbrief und docs/wissen. = der "via Hook/
Wrapper/Guard"-Weg aus der Fallstrick-Karte (Dispatcher-Spawn ist Hermes-intern).

deploy/agent-hooks/pre-verify-gates.sh: der bestehende py_compile/dist-Gate-Hook,
bisher nur manuell auf der Box -> jetzt verbatim im Repo getrackt (ueberlebt
Box-Neuaufbau, schliesst eine Autonomie-Luecke).

deploy.sh synct beide nach ~/.hermes/agent-hooks/ (+chmod). Die Registrierung
in ~/.hermes/config.yaml (hooks: pre_llm_call) bleibt einmalig von Hand
(config.yaml ist Zwei-Schreiber-sensibel).

Verifiziert: Hook-Logik auf der Box gegen synthetische Payloads (Worker ->
987-Zeichen-Kontext injiziert, Lucy/leer -> {}, JSON valide), bash -n + LF sauber.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 21:10:34 +02:00
Auftragsbuch 5436e4df16 Auftragsbuch: 'feature/soul-push-verify' angenommen (Ein-Klick-Gate) 2026-07-13 18:23:33 +02:00
werkstatt a1957d7094 deploy/werkstatt-SOUL.md: Drittes Gate 'Push wirklich gelandet' hinzufügen 2026-07-13 18:21:49 +02:00
claude-direkt 0a9293f669 Werkstatt-Anleitung: Push wirklich verifizieren bevor Abschluss
Drittes Gate nach merge-base + rebase: git ls-remote origin <branch> muss den Branch zeigen, sonst kanban_block statt kanban_complete. Behebt Schein-Erfolg (13.07.2026: Worker meldete gepusht+done, Branch war nie auf Gitea).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 18:17:08 +02:00