Skip to content

Lenny — Tageslog 2026-08-06

Alles auf Branch m0-perception, jede Änderung flag-gesichert + test-gated, live deployt. ~37 neue Tests. Geteilte Brains (truth/creative/language) blieben durchgehend doktrin-streng.

A. Roadmap-Umsetzung (aus der Nacht-Eval 05.→06.08.)

Priorisierte 9-Punkte-Roadmap; Marco: „mach das alles", Entscheidung „#4 voll, Rest als Plan", danach „genau nach Reihenfolge umsetzen".

# Thema Ergebnis Commit
1/2 Renderer-Guard kaputte Einzelverben („Ethik voraussetzen X") + Meta-Relationen (review_supports) nicht mehr als Fakt 54813d9
3 Densifier-Cron thinking_pass alle 3h (deterministisch, kein LLM) 7ed8814
4 Procedural Memory „Wie mache ich X?" → bestätigte Schritt-Prozedur, human-confirmed-Gate e5e1c40
5 Golden-Set-Gate Regressions-Tor gegen Doktrin-Brüche, live 6/6 = 100 % ccdb126
6 Temporal Edge-Log Kanten mit Gültigkeitsintervallen (revidierbar ohne Löschen) 6be6c52
7 Signal-Mixer Stufe 1 L/C/T read-only ins route_trace (Zielbild messbar) 8ef9ef7
8/9 Cache / Creative-Rekombination bewusst zurückgestellt (niedrig-Wert / bräuchte Raten) —

Baupläne für #5/#6/#7 lagen zwischenzeitlich in docs/ROADMAP_PLANS_5_6_7.md (dann als echter Code umgesetzt).

B. Chris' Extremtest — Analyse + Fixes

Chris fütterte Lenny mit 400+ Wissensfragen + 60 Unsinns-Fragen und dokumentierte alles (lenny_wissenstracking.md, inkl. Null-Baseline als Regressionstest).

Analyse-Befunde: 1602 Chat-Kandidaten, 0 promoted („Lenny merkt sich nichts"); 25 % Halluzinationen bei Unsinns-Fragen (alle aus dem Modell-Fallback); 4 konkrete Bug-Klassen.

Fixes (alle live): | Befund | Fix | Commit | |---|---|---| | Konflikt-Blockade (mehrwertiges is_a fälschlich Widerspruch) | Whitelist mehrwertiger Relationen | d20b143 | | 25 % Halluzinationen | Verweigerungspfad: vorsichtige/unsichere Formulierung + Unsinns-Erkennung | 9a86dd2 | | „Masse"→„Masse" | Selbstreferenz-Filter | 9a86dd2 | | „Git"→„代码仓库" | CJK/Non-Latin-Filter | 9a86dd2 | | „Software-Treiber"→„Verbindung", „Router"→„Verbund" | Leer-Begriff-Filter (Answerbasis) | aa95bdd | | kein-Footer („…ist ein Begriff.") | Status-Footer-Garantie am Chokepunkt | 2d254e8 | | „Cloud-Speicher"→„Himmel" | Homonym-Guard (Tech-Lehnwort ≠ Natur-Homophon) | 8fa0eaf |

C. Tenant-Modell + der große Promotion-Hebel

Marcos Klärung: jeder API-Key (→ user_id) bekommt sein eigenes Tenant; alles Besprochene landet dort. Die geteilten Brains bleiben doktrin-streng und lernen NUR über die Evidenz-Pipeline, nie direkt aus Chat. Optionaler req.tent-Param = Zusatz-Tent (Firmenwissen).

  • Tenant-Gesprächslogger (core/tenant_log.py, e20cacf): jeder Chat-Turn timestamped nach user_brains/<user_id>.jsonl (+ optional tent_<name>.jsonl).
  • Tenant-Learning (core/tenant_facts.py + Redirect + Antwortpfad, f305d83): aus dem Chat gelernte Fakten → Tenant des Users (statt Shared-Promotion-Stau), für IHN beantwortbar, gelabelt „aus unseren Gesprächen, nicht geteilt-verifiziert". Löst den 0-promoted-Stau strukturell + Chris' Kernfrust. Per-User isoliert.

D. Ops / Datenintegrität

  • Clobber gelöst (59b9788): Root Cause gepinnt — store.add ON-CONFLICT überschrieb brain mit Default truth; Re-Adds (Stabilitäts-Pass) stuften creative/language nach truth herab (Diode-Verstoß, 236+40 Fragmente). Fix: Upsert stuft creative/language nie nach truth herab. Cleanup: 276 Fragmente wiederhergestellt, Backup angelegt. Brains danach sauber (creative 770 / language 55 / truth 10383).
  • Bekannt: jeder Rebuild-Deploy löst ~1–2 h Embedding-Rebuild aus (Cache nicht inkrementell) + verliert live angelegte User (users.json ins Image gebacken).

Offen / nächste Kandidaten

  • Chris eigener User/Key (Tenant-Isolation) — Eintrag vorbereitet, Key legt Marco.
  • users.json ins Repo committen (User überleben Rebuilds).
  • Inkrementeller Embedding-Cache (Ops, niedrig-Prio).
  • Dichte bleibt ~3 (Soll ~10) — thinking_pass hebt sie langsam.
  • Signal-Mixer Stufe 2/3 (echter Realizer) — großer Zielbild-Schritt.