docs/novaberg-featureliste.md
Rama master · réplica de lectura del repositorio original.
# Novaberg — Featureliste mit Ampel
**Projekt:** Novaberg — The Nova Anima Resonance System
**Dokument:** Vollständiges Register aller Features mit Zustandsampel und Beleg
**Stand:** 8. November 2026, 14:58 UTC (`date -u`; **keine Ampel wechselt** — *Event-Modell* bleibt 🟢 mit neuem Beleg: das Warten auf `graph_run_lock` hält die Event-Schleife nicht mehr an, Code-Tree `10166cb`, Kennung wird nachgetragen, vor dem Commit über den echten Startweg gemessen; `EVENT-LOCK-HAELT-SCHLEIFE` angelegt und geschlossen). Davor 8. November 2026, 14:54 UTC (`date -u`; **keine Ampel wechselt** — *WebSocket-Umbau* bleibt 🟢 mit neuem Beleg: eine Äußerung erreicht die anderen Clients, ohne die Event-Schleife anzuhalten, Code-Tree `737bff3`, Kennung wird nachgetragen, vor dem Commit über den echten Startweg gemessen; `BROADCAST-WARTET-AUF-EIGENER-SCHLEIFE` angelegt und geschlossen). Davor 8. November 2026, 14:45 UTC (`date -u`; **keine Ampel wechselt** — *GV4 — Wissenslücken im Prompt* bleibt 🔴 mit neuem Beleg: ein Ausfall einer Quelle ist von *keine Knoten* unterscheidbar, Code-Tree `9ef9a4e`, Kennung wird nachgetragen, vor dem Commit gegen eine Wegwerf-Datenbank gemessen; `GV4-QUELLEN-SILENT-SKIP` geschlossen). Davor 8. November 2026, 14:34 UTC (`date -u`; **keine Ampel wechselt** — *Rückfrage-Kette*, *NotizenAgent* und *DirektivenAgent* bleiben 🔴 mit neuem Beleg: ein Nein am Tor endet als `dismissed`, Code-Tree `33a7b83`, Kennung wird nachgetragen, vor dem Commit an einer Wegwerf-Datenbank gemessen; `TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` geschlossen). Davor 8. November 2026, 14:17 UTC (`date -u`; **keine Ampel wechselt** — *KZG-Magnetfelder* bleibt 🔴 mit neuem Beleg: ein Turn schreibt jede Entität höchstens einmal in `entitaet_ids`, Code-Tree `e8fd0c9`, Kennung wird nachgetragen, vor dem Commit gemessen; `ENTITAETIDS-MIT-DUBLETTEN` bleibt offen mit dem Bestand als Rest). Davor 8. November 2026, 14:15 UTC (`date -u`; **keine Ampel wechselt** — *Model-Service-Schicht* bleibt 🟢 mit neuem Beleg: `submit_sync` auf der Schleife des Workers scheitert sofort und laut, Code-Tree `8dd9ac9`, Kennung wird nachgetragen, vor dem Commit über den echten Startweg gemessen; `SUBMIT-SYNC-BEHAUPTET-WORKER-THREAD` geschlossen). Davor 8. November 2026, 14:10 UTC (`date -u`; **keine Ampel wechselt** — *Tri-LLM + Connector-System* bleibt 🟢 mit neuem Beleg: der Connector `qwen38` aus `b32a37a`, im Betrieb seit dem 07.11.2026, 11:06 UTC, und die Entscheidung des Meisters vom 08.11.2026, dass er bleibt). Davor 6. November 2026, 20:43 UTC (`date -u`; **zehn Zeilen wechseln auf 🔴, gebaut ist nichts** — neue Kennungen aus der Klassifizierung der Funde vom 25. und 26.10.2026 zeigen darauf: sechs 🟢 → 🔴, vier 🟠 → 🔴, neun bleiben 🔴 mit neuem Beleg; die Spalte *KZG-Agent* berichtigt, *Faszination* trägt ihre offene Frage). Davor 6. November 2026, 20:12 UTC (`date -u`; **keine Ampel wechselt** — die Commit-Kennungen nachgetragen: Code-Tree `3806695` ist `a6e46c2`, die Doku dazu `b87cc49`; Code-Tree `6feb70a` ist `e71df6b`, die Doku dazu `7b35557`). Davor 26. Oktober 2026, 19:50 UTC (`date -u`; **zwei Ampeln wechseln** — *EI-Plausibilitätsgate* und *Kurzzeitgedächtnis KZG* je 🟢 → 🔴: `PERZEPTIONSFELDER-OHNE-KANON` und `KANON-FELDER-NEHMEN-FREMDWERTE` sind behoben, bezeugt, vor dem Commit an gespeicherten Modellausgaben gemessen und mit dem Commit des Code-Trees `6feb70a` (`e71df6b`, die Doku dazu `7b35557`) geschlossen, im Betrieb nicht gemessen; gelesen gegen die Tabelle der Ampeln zeigt auf beide Zeilen je eine andere offene Kennung, `PERZEPTION-EMOTION-AUSSER-KANON` und `KZG-THEMA-VERSTAERKT-NACHBARN`; *`perzeption`* und *Neugier* bleiben 🔴, neu belegt). Davor 26. Oktober 2026, 19:03 UTC (`date -u`; **eine Ampel wechselt** — *`verfasser` — der Inhalt vor der Form* 🔴 → 🟠: `VERFASSER-KOPFBLOCK-FAELLT-AUS` ist behoben, bezeugt, vor dem Commit an den protokollierten Ausfällen gemessen und mit dem Commit des Code-Trees `3806695` (`a6e46c2`, die Doku dazu `b87cc49`) geschlossen, keine offene Kennung zeigt mehr auf die Zeile, im Betrieb nicht gemessen; *`B1` Urteilsfeld vor dem Text* bleibt 🔴, neu belegt). Davor 26. Oktober 2026, 18:41 UTC (`date -u`; **eine Ampel wechselt** — *Dateien-Dienst — Stufe 1* 🟠 → 🟢: die Bindung jeder Kennung an den Menschen im Betrieb gemessen nach dem Commit von `89bcba8`, 50 von 50 Schritten, keine offene Kennung zeigt auf die Zeile; *NotizenAgent* bleibt 🔴, neu belegt). Davor 26. Oktober 2026, 18:33 UTC (`date -u`; **keine Ampel wechselt** — die Commit-Kennungen nachgetragen: Code-Tree `30b81af` ist `89bcba8`, die Doku dazu `64ba8dd`; Code-Tree `9c1df7a` ist `b03db21`, die Doku dazu `de16bea`). Davor 26. Oktober 2026, 08:25 UTC (`date -u`; **keine Ampel wechselt, vier Belege schon** — *DirektivenAgent*, *CharakterIdentitätsAgent*, *NotizenAgent* und *TimelineAgent* lesen die Antwort des Modells geprüft, Code-Tree `9c1df7a`, Kennung wird nachgetragen → committet als `b03db21`, die Doku dazu als `de16bea` `[Code]`, vor dem Commit am Modell gemessen `[gemessen 25. und 26.10.2026]`; `KLASSIFIKATION-NULL-FELD-WIRFT` angelegt und geschlossen). Davor 26. Oktober 2026, 08:17 UTC (`date -u`; **eine Ampel wechselt** — *Dateien-Dienst — Stufe 1* 🟢 → 🟠: `SCHREIBWEG-KENNUNG-OHNE-MENSCH` zeigte vom 25. bis 26.10.2026 darauf, ohne dass die Ampel auf 🔴 ging, und ist jetzt mit Zeugen geschlossen, der gebundene Lese- und Schreibweg ist im Betrieb nicht gemessen; *NotizenAgent* bleibt 🔴 mit neuem Beleg — jede Kennung an den Menschen gebunden, Code-Tree `30b81af`, Kennung wird nachgetragen → committet als `89bcba8`, die Doku dazu als `64ba8dd` `[Code]`). Davor 26. Oktober 2026, 07:51 UTC (`date -u`; **drei Ampeln wechseln** — *CharakterIdentitätsAgent* 🔴 → 🟠 und *Rückweg der Rückfrage* (Dateien-Wurzeln) 🔴 → 🟠, weil keine offene Kennung mehr darauf zeigt und der Dienst im Betrieb nicht gemessen ist; *FaktenManager* 🔴 → 🟢, abgelöst und gelöscht; *DirektivenAgent*, *NotizenAgent*, *Rückfrage-Kette*, *Entity Resolution* und ↳ *F2* bleiben 🔴 mit neuem Beleg: `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG`, `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` und `DIREKTIVEN-KENNUNG-UNGEPRUEFT` im Betrieb gemessen (an einem Prüf-Nutzer, 9 von 9 Schritten wie Soll) `[gemessen 26.10.2026]` und geschlossen, `AUFLOESUNG-AUSFALL-WIRD-NEUE-ENTITAET` geschlossen, fünf Kennungen des Faktengedächtnisses mit ihrem Commit geschlossen; die Commit-Kennungen der Code-Trees `2876b85` (`236edec`) und `47256bf` (`a4997ac`) nachgetragen). Davor 25. Oktober 2026, 22:06 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F2* bleibt 🔴 und trägt den Beleg: der Subjekttyp je Tripel gebaut und vor dem Commit am Modell gemessen, Code-Tree `47256bf` `[Code]`, nicht committet → committet als `a4997ac`, Subjekttyp getroffen 28 von 30 `[gemessen 25.10.2026]`; `FAKTEN-ORT-ALS-SUBJEKT-DURCHGELASSEN` geschlossen und im Archiv, rot halten `FAKTEN-OHNE-EMBEDDING`, `FAKTEN-HEISST-ICH-AUSGENOMMEN` und `FAKTEN-SUCHE-PRIVATE-KLAERUNGSFRAGE`). Davor 25. Oktober 2026, 21:59 UTC (`date -u`; **keine Ampel wechselt**, solange `DIREKTIVEN-KENNUNG-UNGEPRUEFT` offen ist — *DirektivenAgent* und *CharakterIdentitätsAgent* bleiben 🔴 und tragen den Beleg: Kennung aus der Modellausgabe geprüft gelesen und an den Menschen gebunden, Code-Tree `2876b85` `[Code]`, nicht committet → committet als `236edec`, vor dem Commit am Modell 54 Bitten, 0 Werte ungeprüft, 34 von 34 Kennungen gleich der gemeinten `[gemessen 25.10.2026]`; die Messung im Betrieb steht aus). Davor 25. Oktober 2026, 08:55 UTC (`date -u`; keine Ampel wechselt — im Betrieb am 24.10.2026 teils gemessen: Notizen über den echten Weg bestanden, Tor der Direktiven mit gesetzter Rückfrage 4 von 4, der echte Weg zur Frage der Direktiven bricht an `DIREKTIVEN-KENNUNG-UNGEPRUEFT` ab (neu, hoch); `ABLEHNUNG-OHNE-STAMM-BESTAETIGT` und `WURZELN-ABLEHNUNG-UNGELESEN` geschlossen und im Archiv; *DirektivenAgent* nennt den neuen Bug). Davor 24. Oktober 2026, 22:21 UTC (`date -u`; die Commit-Kennung nachgetragen — Code-Tree `f901e08` ist `e1e0724`, die Doku dazu `d2d6ec8`). Davor 24. Oktober 2026, 21:35 UTC (`date -u`; keine Ampel wechselt — neu belegt an Zeilen, die 🔴 bleiben: *Rückfrage-Kette*, *DirektivenAgent*, *NotizenAgent*, *CharakterIdentitätsAgent* und *Rückweg der Rückfrage* (Dateien-Wurzeln): `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG`, `ABLEHNUNG-OHNE-STAMM-BESTAETIGT` und `WURZELN-ABLEHNUNG-UNGELESEN` sind im Code-Tree `f901e08` behoben und bleiben offen bis zur Messung im Betrieb). Davor 24. Oktober 2026, 16:50 UTC (`date -u`; **drei Ampeln wechseln auf 🔴** — *CharakterIdentitätsAgent* 🟢 → 🔴 in §4 und §7.2 (`ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG`), *Zeitparser* 🟢 → 🔴 (`ZEIT-TAG-AN-TEILWORT-ERKANNT`), *Synapsen-Modell* 🟠 → 🔴 (`LZG-KANTEN-BESTAND-AUF-ALTEM-KNOTENGEWICHT`); neu belegt an Zeilen, die 🔴 bleiben — *Rückfrage-Kette*, *NotizenAgent*, *DirektivenAgent* und *Rückweg der Rückfrage* (`ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG`, dazu `TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN`, `DIREKTIVEN-AUSWAHLFRAGE-OHNE-LESER`, `DIREKTIVEN-RUECKFRAGE-OHNE-ZIEL`), *TimelineAgent* (`VERSCHIEBEN-TAGESZEIT-WIDERSPRICHT-STUNDE`, `VERSCHIEBEN-RUECKFRAGE-NENNT-FALSCHEN-GRUND`, `ZEIT-TAG-AN-TEILWORT-ERKANNT`); die acht Kennungen kommen aus der Klassifizierung der Funde vom 24.10.2026; die Commit-Kennungen `408eebb` und `6846120` nachgetragen). Davor 24. Oktober 2026, 14:20 UTC (`date -u`; **keine Ampel wechselt** — *DirektivenAgent* und *Rückfrage-Kette* bleiben 🔴, neu belegt: die Deutung am Tor der Direktiven gebaut im Code-Tree `2457549`, im Betrieb nicht gemessen, `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` offen bis dahin; `ABLEHNUNG-OHNE-STAMM-BESTAETIGT` gilt jetzt auch für die Direktiven). Davor 24. Oktober 2026, 13:58 UTC (`date -u`; **keine Ampel wechselt** — *TimelineAgent* bleibt 🔴, neu belegt: die Rückfrage nach der Tageshälfte beim Verschieben gebaut im Code-Tree `3e1bb3f` und am Modell gemessen, `VERSCHIEBEN-NACKTE-STUNDE-OHNE-TAGESHAELFTE` im Archiv; andere offene Kennungen zeigen weiter auf die Zeile; *Zeitparser* bleibt 🟢, neu belegt mit `TIME_VOCABULARY.dayparts`). Davor 24. Oktober 2026, 13:43 UTC (`date -u`; **eine Ampel wechselt, 🔴 → 🟠** — *Synapsen-Modell*: Trigger 2 an der Verwendung, committet als `570cdda`, im Betrieb gemessen, `LZG-KANTEN-NACH-VERWENDUNG-UNVERAENDERT` im Archiv; Rot hielt die Zeile allein diese Kennung, 🟢 nicht, weil der Rest bleibt). Davor 24. Oktober 2026, 11:07 UTC (`date -u`; **keine Ampel wechselt** — *Synapsen-Modell* bleibt 🔴, neu belegt: Trigger 2 an der Verwendung gebaut im Code-Tree `3a5ccab`, im Betrieb nicht gemessen, `LZG-KANTEN-NACH-VERWENDUNG-UNVERAENDERT` offen bis dahin). Davor 24. Oktober 2026, 10:55 UTC (`date -u`; **zwei Ampeln wechseln, je 🟠 → 🔴** — ↳ *F2* (`FAKTEN-ORT-ALS-SUBJEKT-DURCHGELASSEN`) und ⏫ *Frames · Skills · Task-Orchestration · Cognitive Pipeline*, die Scheiben 1–11 des Lage-Konzepts (`SACHLAGE-RECHERCHE-WIEDERHOLT-IM-FOLGETURN`, `SACHLAGE-WARNUNG-NACH-OFFEN-AM-LATENTEN-OBJEKT`); vier Belege an Zeilen, die 🔴 bleiben — *KZG-Magnetfelder* (`MAGNET-ANKER-VERGANGENES-WIRD-KOMMEND`), ↳ *F6* (`FAKTEN-EREIGNISVERWEIS-AM-BEZIEHUNGSFAKT`), ↳ *Scheibe 13* (`SACHLAGE-SYMBOL-GILT-ALS-PLATZHALTER`; dazu der Platzhalter-Bau committet als `e13261a`), *SynapsenPromotionAgent* (`LZG-TREFFER-MELDET-REINFORCEMENT`); die sieben Kennungen kommen aus der Klassifizierung der Funde vom 23.10.2026). Davor 23. Oktober 2026, 22:31 UTC (`date -u`; **keine Ampel wechselt, neun Belege schon** — `TIMELINE-CLIPBOARD-OHNE-ID`, `KZG-EINTRAG-BLEIBT-NACH-PROMOTION` und `LZG-PROMOTION-TREFFER-VERSTAERKT` im Betrieb gemessen und im Archiv, rot halten die übrigen Kennungen; ↳ *F6* die Schritte 5–6 im Betrieb gemessen, bleibt 🔴; ↳ *F2* 3 Fakten im Betrieb, bleibt 🟠; ↳ *Scheibe 13* `SACHLAGE-PLATZHALTER-ALS-WERT` behoben, am Modell gemessen und im Archiv, bleibt 🔴). Davor 23. Oktober 2026, 21:18 UTC (`date -u`; **keine Ampel wechselt, sieben Belege schon** — zwei Bauten, gebaut, getestet und gegengeprüft, im Betrieb nicht gemessen: *TimelineAgent* und *KZG-Magnetfelder* bleiben 🔴, `TIMELINE-CLIPBOARD-OHNE-ID` behoben im Code-Tree `4d68f6e`; *Synapsen-Modell* bleibt 🔴, `KZG-EINTRAG-BLEIBT-NACH-PROMOTION` und `LZG-PROMOTION-TREFFER-VERSTAERKT` behoben in den Code-Trees `2d18b83` und `5342a6a`, rot hält `LZG-KANTEN-NACH-VERWENDUNG-UNVERAENDERT`, jetzt mittel; *Halbreaktivierung* und *SynapsenPromotionAgent* bleiben 🔴, *Promotion KZG → LZG* und *Kurzzeitgedächtnis KZG* bleiben 🟢, neu belegt). Davor 23. Oktober 2026, 20:11 UTC (`date -u`; **keine Ampel wechselt, vier Belege schon** — *WiedervorlageAgent* bleibt 🔴: `WIEDERVORLAGE-TIMELINE-OHNE-TITEL` behoben mit `5c00a98` und im Betrieb gemessen, im Archiv; rot hält die Zeile `WIEDERVORLAGE-SNOOZE-OHNE-WIRKUNG`, am Code von `5c00a98` unverändert; *Synapsen-Modell* bleibt 🔴: §7.1a gegen K10 entschieden, ein Treffer der Promotion verstärkt nicht — der Code schon, neu `LZG-PROMOTION-TREFFER-VERSTAERKT`; ↳ *Scheibe 13* bleibt 🔴: die Fakten auch für eine gebundene Person im Namen eines akuten Objekts entschieden, nicht gebaut, Backlog `SACHLAGE-FAKTEN-PERSON-IM-OBJEKTNAMEN`; ↳ *F7* bleibt ⚫: der Typ ist ein Fakt, nicht `entitaeten.typ`, nach `novaberg-memory-fakten_e.md` A Nr. 41–43). Davor 22. Oktober 2026, 23:00 UTC (`date -u`; **eine Ampel wechselt** — ↳ *Scheibe 13* 🟠 → 🔴: Teil H und der Kanal am Modell gemessen, der passende Fakt 18 von 18 ohne Fehlgriff, die erfragte Person aber nur in 43 von 92 Läufen akut; rot, weil offene Kennungen darauf zeigen — `SACHLAGE-KALENDER-VERFEHLT-OBJEKTNAMEN` seit dem 17.10.2026, dazu aus der Messung `SACHLAGE-PLATZHALTER-ALS-WERT` und `SACHLAGE-FAKT-DECKT-MIT-UMSCHREIBUNG`). Davor 22. Oktober 2026, 22:45 UTC (`date -u`; **drei Ampeln wechseln auf 🔴** — *Synapsen-Modell* 🟠 → 🔴 (`LZG-KANTEN-NACH-VERWENDUNG-UNVERAENDERT`), *Halbreaktivierung* 🟠 → 🔴 (`LZG-HALBREAKTIVIERUNG-HAELT-EINEN-TAG`), *WiedervorlageAgent* 🟠 → 🔴 (`WIEDERVORLAGE-TIMELINE-OHNE-TITEL`); *TimelineAgent* bleibt 🔴, neu belegt mit `TIMELINE-CLIPBOARD-OHNE-ID` und `TIMELINE-KONFIDENZ-OHNE-LESER`, *KZG-Magnetfelder* bleibt 🔴, neu belegt mit `TIMELINE-CLIPBOARD-OHNE-ID` — am Code geprüft am 22.10.2026, kein Code geändert). Davor 22. Oktober 2026, 20:29 UTC (`date -u`; **keine Ampel wechselt, ihr Beleg schon** — ↳ *Scheibe 13* bleibt 🟠: Teil H, die Fakten einer gebundenen Person im Angebot der Sachlage mit Regel (c) nach der Entscheidung vom 22.10.2026 und der Kalender dort mit eigener Grenze, und Teil A, der Erinnerungsanker vor dem Router, gebaut, getestet und committet (Code-Trees `d810399`, `0d5f633`, `04f823e`), im Betrieb nicht gemessen; ↳ *F1* bleibt 🟠, zwei ihrer drei Leser gebaut). Davor 22. Oktober 2026, 06:12 UTC (`date -u`; **keine Ampel wechselt, ihr Beleg schon** — ↳ *F6* bleibt 🔴: das Jahr eines Ereignisses kommt aus der Zeitlage, am Modell gemessen — angekündigt in der Vergangenheit 0 von 16, `EREIGNIS-KOMMENDES-WIRD-VERGANGEN` geschlossen; rot jetzt wegen `EREIGNIS-KANDIDAT-OHNE-SPRECHER`, 5 von 28 erwarteten Ereignissen erreichen den Ereignis-Aufruf nicht; die Messung im Betrieb steht aus). Davor 22. Oktober 2026, 06:06 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F6* bleibt 🔴: die Schritte 5–6 gebaut und getestet, im Betrieb nicht gemessen (Code-Tree `864c3b9`) — das Ereignis gekennzeichnet in `[TERMINE]`, ein Monat bis zu seinem Ende kommend, die Mappe mit *ab*/*bis*, eine genaue Angabe verschiebt die Monatszeile; rot bleibt sie wegen `EREIGNIS-KOMMENDES-WIRD-VERGANGEN`; ↳ *F1* bleibt 🟠, die Mappe trägt *ab*/*bis*). Davor 22. Oktober 2026, 05:27 UTC (`date -u`; **eine Ampel wechselt** — ↳ *F6* 🟠 → 🔴: die Schritte 3–4 gebaut, getestet und am Modell gemessen, ein angekündigtes Ereignis steht in 5 von 8 Fällen in der Vergangenheit (`EREIGNIS-KOMMENDES-WIRD-VERGANGEN`); die Grundlage von F6 committet als `091a99d`; ↳ *S7* bleibt 🟠 — committet als `2cfe1b0`, die DDL angewandt und gemessen, „173 aktiv“ auf 170 berichtigt; *TimelineAgent* bleibt 🔴). Davor 21. Oktober 2026, 20:11 UTC (`date -u`; **eine Ampel wechselt** — ↳ *F6* ⚫ → 🟠: die Grundlage gebaut und getestet, nicht committet — S5 `timeline.nachfolger_id`, die Typquelle mit `ereignis`, das Verschieben in einer Transaktion; der Weg im Turn fehlt; *TimelineAgent* bleibt 🔴, ↳ *S7* bleibt 🟠). Davor 21. Oktober 2026, 19:47 UTC (`date -u`; **eine Zeile kommt dazu, keine Ampel wechselt** — ↳ *S7 — die Timeline je Paar* 🟠: gebaut und getestet, nicht committet, die DDL am Betrieb nicht angewandt; *TimelineAgent* bleibt 🔴, ↳ *F6* bleibt ⚫). Davor 21. Oktober 2026, 18:51 UTC (`date -u`; **keine Ampel wechselt** — ↳ *Scheibe 13*: das Kalender-Angebot der Sachlage liest aus einem Zeitbezug am Objekt, nicht committet, im Betrieb nicht gemessen). Davor 21. Oktober 2026, 10:38 UTC (`date -u`; **keine Ampel wechselt** — *Entity Resolution*: der Magnet-Pfad löst nur über den Namen auf, nicht committet). Davor 21. Oktober 2026, 07:10 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F7*: der Typ aus der Klassifikation). Davor 21. Oktober 2026, 00:57 UTC (`date -u`; **keine Ampel wechselt** — *Entity Resolution*: ein Ausfall der Auflösung legt nichts mehr still an, nicht committet). Davor 21. Oktober 2026, 00:32 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F1*: das Plugin `fakten_manager` gelöscht, nicht committet). Davor 21. Oktober 2026, 00:32 UTC (`date -u`; **eine Ampel wechselt** — ↳ *F1* ⚫ → 🟠: die Mappe gebaut, nicht committet). Davor 20. Oktober 2026, 23:47 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F2*: Bau 4, die Klassifikation auf die Kandidaten, gebaut und am Modell gemessen, nicht committet). Davor 20. Oktober 2026, 22:40 UTC (`date -u`; **keine Ampel wechselt** — *Schema*: die Server-Suite in den Wegwerf-Behältern grün, nicht committet). Davor 20. Oktober 2026, 22:39 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F2*: Bau 3 des passiven Agenten, der Schreibauftrag aus der Sachlage, gebaut, nicht committet). Davor 20. Oktober 2026, 22:05 UTC (`date -u`; **zwei Ampeln wechseln** — *Entity Resolution* und *Rückweg der Rückfrage* 🟢 → 🔴, neue Bugs aus der Klassifizierung der Fundliste vom 18. bis 20.10.2026; *Rückfrage-Kette*, *NotizenAgent* und ↳ *F2* tragen ihre neuen Kennungen, ohne Wechsel). Davor 20. Oktober 2026, 21:30 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F1*: Leser, Ort und Endpunkt der Mappe entschieden, nicht gebaut). Davor 20. Oktober 2026, 19:34 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F2*: der Agent verlässt das Brett, Zustellung nur noch über den Dispatcher, der Schreibauftrag nicht gebaut). Davor 20. Oktober 2026, 18:55 UTC (`date -u`; **keine Ampel wechselt** — ↳ *F2*: der Weg des Referenzwissens entschieden, der passive Agent, nicht gebaut). Davor 20. Oktober 2026, 05:32 UTC (`date -u`; **zwei Ampeln wechseln** — ↳ *F2* ⚫ → 🟠: der Schreibweg des Fakten-Agenten gebaut, erreichbar noch nicht; ↳ *F5* ⚫ → 🟢: ablösen statt überschreiben, gebaut und gemessen). Davor 18. Oktober 2026, 14:59 UTC (`date -u`; **eine Ampel wechselt** — *Faktengedächtnis* ⚫ → 🟠: Schema und Repository gebaut). Davor 18. Oktober 2026, 13:02 UTC (`date -u`; **keine Ampel wechselt** — *Schema in `db/init.sql` + Agenten-`init.sql`* bleibt 🔴, neu belegt: jeder Lauf der Server-Suite baut das Schema von null in Wegwerf-Behältern). Davor 18. Oktober 2026, 11:16 UTC (`date -u`; **keine Ampel wechselt** — *Schema in `db/init.sql` + Agenten-`init.sql`* bleibt 🔴, neu belegt mit dem lauten Einstieg `python -m schema_bootstrap`, Tree `6f23a80`). Davor 18. Oktober 2026, 01:01 UTC (`date -u`; **eine Ampel wechselt** — *DirektivenAgent* 🟢 → 🔴: `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` neu, auf die Pflicht-Rückfrage führt auch ein Nein aus; nachgezogen ohne Ampelwechsel *Rückfrage-Kette* 🔴 (`ZUSTIMMUNG-GILT-ALS-ABLEHNUNG` behoben im Tree `9153022`, gemessen; rot bleibt wegen der Direktiven), *NotizenAgent* 🔴, *CharakterIdentitätsAgent* 🟢, *Rückweg der Rückfrage* 🟢). Davor 17. Oktober 2026, 23:45 UTC (`date -u`; **keine Ampel wechselt** — *Schema in `db/init.sql` + Agenten-`init.sql`* 🔴 und *Dateien-Dienst — Stufe 2* 🟢 mit dem Aufbau von null nachgezogen: `SCHEMA-VON-NULL-SCHEITERT` behoben im Tree `dbf9063`, gemessen). Davor 17. Oktober 2026, 21:50 UTC (`date -u`; **keine Ampel wechselt** — die Bauart des Faktengedächtnisses und die der Klärfälle angenommen, nichts gebaut: *Faktengedächtnis* ⚫ mit ↳ *F6* und ↳ *F7* ⚫, *Klärung* ⚫ nachgezogen). Davor 17. Oktober 2026, 21:19 UTC (`date -u`; **keine Ampel wechselt** — ↳ *Scheibe 13* 🟠, Teil H im Betrieb gemessen: das Angebot leer an den Objektnamen, ein neuer Bug). Davor 17. Oktober 2026, 20:29 UTC (`date -u`; **eine Ampel wechselt** — ↳ *Scheibe 13* ⚫ → 🟠: der Frame-Auflöser liest Termine über den gemeinsamen Leseweg; nachgezogen das Lage-Konzept 🟠, *TimelineAgent* 🔴, *↳ Lesen nach Zeitraum* 🟠, *Faktengedächtnis* ⚫; Server-Suite 4584). Davor 17. Oktober 2026, 17:05 UTC (`date -u`; **keine Ampel wechselt** — *Faktengedächtnis* ⚫ mit M1 gemessen, die Salienz trennt nah nicht von fremd (`SALIENZ-TRAEGT-NAEHE-NICHT`), M2 hinter F1; ↳ *F1* zählt sechs alte Leser statt vier; *TimelineAgent* 🔴 und *FaktenManager* 🔴 mit vier neuen Kennungen). Davor 17. Oktober 2026, 15:49 UTC (`date -u`; **neun Zeilen kommen dazu, alle ⚫, keine Ampel wechselt** — das Konzept *Faktengedächtnis* (`novaberg-memory-fakten_k.md`) mit ↳ *F1* bis *F7* in §3.1 und ↳ *Scheibe 13* der Lage in §6, entworfen nach den Entscheidungen des Meisters vom 17.10.2026; *Klärung* ⚫ und *FaktenManager* 🔴 verweisen darauf). Davor 17. Oktober 2026, 14:36 UTC (`date -u`; **keine Ampel wechselt** — *NotizenAgent* 🔴: Notizen ohne genannten Namen heißen nach ihrem Inhalt, gemessen 8 von 8, `NOTIZ-BEFEHL-ALS-TITEL` geschlossen; *TimelineAgent* 🔴 mit dem Endstand des Umbaus und `TIMELINE-TITEL-MEHRERE-TREFFER-OHNE-TAG`; das Wochenende entschieden). Davor 17. Oktober 2026, 13:13 UTC (`date -u`; **eine Zeile kommt dazu, keine Ampel wechselt** — der Umbau der Timeline: *↳ Lesen nach Zeitraum* 🟠 neu, *TimelineAgent* 🔴, Scheibe 12 A 🟠 und `tribunal` 🔴 mit *Ein Lesevorgang deckt nicht*, *Klärung* ⚫ mit dem Entwurf am Objekt; Server-Suite 4562). Davor 16. Oktober 2026, 20:12 UTC (`date -u`; **keine Ampel wechselt** — zweite Simulation: *NotizenAgent* 🔴 mit neuem Beleg, Notizen 5 von 6, `NOTIZ-BEFEHL-ALS-TITEL` belegt; Scheibe 12 A 🟠 und 12 D 🟠 mit dem Messstand; die Nennung geschärft, Server-Suite 4457). Davor 16. Oktober 2026, 16:02 UTC (`date -u`; **keine Ampel wechselt** — *NotizenAgent* 🔴: `NOTIZAUFTRAG-GEHT-AN-TIMELINE` 2 von 2 gemessen und gebaut, Messung ausstehend; nachgezogen `tribunal` 🔴, Scheibe 12 A 🟠, Scheibe 12 D 🟠; Server-Suite 4440). Davor 16. Oktober 2026, 00:58 UTC (`date -u`; **keine Ampel wechselt** — *TimelineAgent* 🔴: das Verschieben auf dem Endstand des Baus, zwei Prüfungen vor jedem Schreiben, `ZeitVektor.clock_time` gibt es nicht; Zeugen 75, Server-Suite 4411). Davor 15. Oktober 2026, 21:32 UTC (`date -u`; **keine Ampel wechselt** — drei Bauten an der Timeline, getestet, im Betrieb nicht gemessen: *TimelineAgent* 🔴, *TimelineManager* 🟠, `verfasser` 🔴, Lage-Konzept 🟠 nachgezogen). Davor 15. Oktober 2026, 16:52 UTC (`date -u`; *Pausenschalter melden sich* 🟠 → 🟢, Messbelege aus dem Betrieb). Davor 15. Oktober 2026, 01:32 UTC (`date -u`; **keine Ampel wechselt** — die Faszination im Turn rechnet den Strangzug je Träger, die KZG-Intentionstabelle schreibt den Kanon). Davor 15. Oktober 2026, 01:25 UTC (`date -u`; **eine Zeile kommt dazu, keine Ampel wechselt** — *Pausenschalter melden sich* 🟠; nachgezogen nach dem Bau des Tages: Faszination §12 gefahren, Scheibe 12 A mit Bestandsabgleich, Verstärkung der Ziele, Aufgriff der offenen Fragen messbar, Neugier-Boost je Kandidat). Davor 13. Oktober 2026, 22:37 UTC (`date -u`; **acht Zeilen der ⏫-Stränge gegen den Code gehalten** — Prägung, Wissenslücken, Faszination, Meinung, Neugier, Antrieb, Lage und Scheibe 12 A; Widerlegtes durchgestrichen, Bestandszahlen vom 13.10., Pixie steht seit dem 03.10. pausiert). Davor 9. Oktober 2026, 14:41 UTC (`date -u`; Avatar-Leerlauf: `n` der Phasenanzeige ist die gezogene Zahl). Davor 8. Oktober 2026, 10:57 UTC (`date -u`; Avatar-Panel: die Bilder der Figur im Repositorium, O13). Davor 5. Oktober 2026, 22:29 UTC (`date -u`; **drei Ampeln wechseln, 🔴 → 🟠** — `planner`, `haltung`, *Audit-Pflicht*: ihre roten Gründe sind bei der Durchsicht der offenen Bugs geschlossen). Davor 5. Oktober 2026, 21:32 UTC (`date -u`; **keine Ampel wechselt** — Untertitel und stummer Regietext im Client abgenommen). Davor 5. Oktober 2026, 21:21 UTC (`date -u`; **keine Ampel wechselt** — die Untertitel unter dem Avatar). Davor 5. Oktober 2026, 21:03 UTC (`date -u`; **keine Ampel wechselt** — der Avatar spricht keine Regieanweisungen, O12). Davor 5. Oktober 2026, 20:34 UTC (`date -u`; **keine Ampel wechselt** — die Glanzlichter im Client abgenommen). Davor 5. Oktober 2026, 20:22 UTC (`date -u`; **keine Ampel wechselt** — die Glanzlichter im Client gebaut). Davor 5. Oktober 2026, 20:07 UTC (`date -u`; **keine Ampel wechselt** — der Blickhalt im Client abgenommen). Davor 5. Oktober 2026, 20:00 UTC (`date -u`; **keine Ampel wechselt** — der Blickhalt im Client gebaut). Davor 5. Oktober 2026, 19:02 UTC (`date -u`; **keine Ampel wechselt** — die Glanzlichter im Labor abgenommen, der Client folgt). Davor 5. Oktober 2026, 18:47 UTC (keine Ampel wechselt — die Glanzlichter der Augen stehen im Prototyp, der Client folgt). Davor 5. Oktober 2026, 17:19 UTC (keine Ampel wechselt — die Schrift der Phasenanzeige im Client abgenommen). Davor 5. Oktober 2026, 17:10 UTC (keine Ampel wechselt — die Phasenanzeige des Avatars schreibt in der Größe der Statusleiste). Davor 5. Oktober 2026, 16:59 UTC (keine Ampel wechselt — der Blickhalt im Generator abgenommen, der Client folgt). Davor 5. Oktober 2026, 15:24 UTC (keine Ampel wechselt — L5 gebaut, die Messung im Betrieb steht aus, solange Pixie pausiert). Davor 5. Oktober 2026, 14:01 UTC (keine Ampel wechselt — der Blickhalt im Generator). Davor 5. Oktober 2026, 12:57 UTC (keine Ampel wechselt — *Avatar-Leerlauf* bleibt 🟠: der Blickhalt als Entwurf im Labor, der Sprung im Generator und der Client folgen). Davor 5. Oktober 2026, 06:33 UTC (keine Ampel wechselt — *Avatar-Panel* bleibt 🟠: die Mimik nach der Literatur ist im Client abgenommen; offen bleiben echter Turn und Impuls im sichtbaren Fenster, die Bildrate und die Bilder im Repositorium). Davor 5. Oktober 2026, 06:15 UTC (keine Ampel wechselt — die Mimik nach der Literatur im Client gebaut und gegen den Prototyp gemessen, offen ihre Sichtprüfung im Client). Davor 5. Oktober 2026, 05:50 UTC (keine Ampel wechselt — *Avatar-Leerlauf* und *Avatar-Panel* bleiben 🟠: L1′/L2′ im Betrieb vom Eigentümer abgenommen, offen sind W im Client, L5 und die gezählten Größen nach §18.1). Davor 5. Oktober 2026, 00:27 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: L1′ und L2′a–L2′c gebaut, der Client folgt der nachgestellten Referenz, die Messung im Betrieb steht aus; *Avatar-Panel* bleibt 🟠: die Bildzeit mit Kopfdrehung gemessen, ihr Ziel verfehlt). Davor 4. Oktober 2026, 22:00 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: die Referenz in der Sichtprüfung abgenommen, der Client folgt). Davor 4. Oktober 2026, 21:49 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: die Gegenproben der Kopfdrehung). Davor 4. Oktober 2026, 20:31 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: die Kopfdrehung in der Referenz). Davor 4. Oktober 2026, 19:45 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: die Referenz nachgestellt, zweiter Teil). Davor 4. Oktober 2026, 17:30 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: die Referenz nachgestellt, erster Teil). Davor 4. Oktober 2026, 15:35 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: L4 gebaut, der Server sendet die Arbeitszyklen; im Betrieb ungemessen). Davor 4. Oktober 2026, 14:32 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Panel* bleibt 🟠: die Wahrnehmung der Antwort im Betrieb gemessen, zwei von zwei). Davor 4. Oktober 2026, 14:16 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Panel* bleibt 🟠: beim Sprechen zeigt das Gesicht die Wahrnehmung der Antwort, nicht die Stimmung zu Turnbeginn). Davor 4. Oktober 2026, 13:39 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: L6 im Betrieb gemessen, die Anzeige folgt dem Gesicht; zwei neue Mängel). Davor 4. Oktober 2026, 12:52 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: L3 im Betrieb gemessen, die Abnahme des Turns nach §18.1 besteht er nicht; L6 zeigt die Phase unter dem Gesicht, ungemessen). Davor 4. Oktober 2026, 11:28 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: die Arbeitszyklen erreichen das Panel (L3), die Messung im sichtbaren Fenster steht aus). Davor 3. Oktober 2026, 19:07 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt 🟠: die Puppe lebt aus dem Leerlauf (L2), das Panel ist noch nicht verdrahtet). Davor 3. Oktober 2026, 17:09 UTC (`date -u`; **eine Ampel wechselt** — *Avatar-Leerlauf* ⬜ → 🟠: die Leerlauf-Logik L1 steht im Client, nicht verdrahtet). Davor 3. Oktober 2026, 13:40 UTC (`date -u`; **keine Ampel wechselt** — *Avatar-Leerlauf* bleibt ⬜: die Referenz L0 liegt vor, im Client ist nichts gebaut). Davor 3. Oktober 2026, 11:56 UTC (`date -u`; eine Zeile kommt dazu — *Avatar-Leerlauf* ⬜, Konzept vollständig, nicht gebaut). Davor 3. Oktober 2026 (`date -u`; eine Zeile kommt dazu — *Avatar-Panel* 🟠). Davor 20. September 2026, 07:46 UTC (`date -u`; **keine Ampel wechselt** — `SYNAPSEN-K8-SKALA` entschieden: keine Umrechnung, der Einstieg bei 3,4 bis 4,0 ist so gewollt, nach oben bedient die Verstärkung die Skala). Davor 20. September 2026, 00:13 UTC (`date -u`; **keine Ampel wechselt** — `SYNAPSEN-K8-SKALA` gemessen: ein neuer Knoten startet bei `gewicht_absolut` 3,4 bis 4,0 von 10, Faktor 34 über der Deaktivierungsschwelle; die Entscheidung des Meisters steht aus). Davor 19. September 2026, 23:49 UTC (`date -u`; drei Stellen gegen die Quellen gemessen, auf die sie zeigen — *Initiative-Achse*, *Erreichbarkeit der Landschaften* und die Eigenzeit-Bauteile A–F; **zwei Ampeln wechseln** — *Eigenzeit E* 🟢 → 🟠, weil die Tagesmessung des Zuschreibungsanteils fehlt und 🟢 alle drei Zeilen des Bauauftrags verlangt, und *Eigenzeit F* 🟢 → 🔴, weil `PROMPTAENDERUNG-OHNE-STAPELWIRKUNG` im Defektregister offen auf den Zeichenkorridor dieses Bauteils zeigt. **Unverändert:** *Initiative-Achse* 🔴, *Erreichbarkeit der Landschaften* 🟠, *Eigenzeit C* und *D* 🟠, *Eigenzeit A* 🟢, *Eigenzeit B* 🟠). Davor 19. September 2026, 21:27 UTC (Verweise auf das geteilte Bugregister umgestellt). Davor 19. September 2026, 21:05 UTC (`date -u`; **eine Ampel wechselt** — `SynapsenPromotionAgent` 🟢 → 🔴 durch den neuen Defekt `PROMO-LAUF-ZAEHLT-VERWORFENE`, nach der Regel *ein Defekt mit Kennung färbt die Zeile*; der Agent promotet, sein Laufzähler ist falsch). Davor 19. September 2026, 20:53 UTC (`date -u`; **keine Ampel wechselt** — `KZG-ERSTELLT-AM-PARSE-HÄRTE` gebaut: ein unlesbarer Anlagezeitpunkt wird verworfen statt erfunden; damit ist Synapsen P4 abgeschlossen). Davor 19. September 2026, 20:42 UTC (`date -u`; **keine Ampel wechselt** — `SYNAPSEN-LIVE-VERIFY` abgenommen: Entitäts- und Timeline-Kanten tragen, 1.831/1.831 und 4.137/4.137 Paare; P4 wartet noch auf `KZG-ERSTELLT-AM-PARSE-HÄRTE`). Davor 19. September 2026, 20:24 UTC (`date -u`; **keine Ampel wechselt** — Synapsen P4 eingeordnet: Die Promotion trägt ihre offenen Abnahmen im Rest, die Zeile heißt nicht mehr *Zwei-Call*, weil der Agent kein Sprachmodell aufruft; die Quellen nennen 45 Konzepte). Davor 19. September 2026, 20:13 UTC (`date -u`; **keine Ampel wechselt** — das Bugregister ist nach Gegenstand geteilt, offen und Archiv je in sechs Teilen; die Defekte dieser Liste stehen seither dort, gefunden über `novaberg-bugs-index.md`). Davor 19. September 2026, 12:14 UTC (`date -u`; **keine Ampel wechselt** — das Angebot gilt pro Sache; die Bedarfsaussage im Betrieb gemessen). Davor 19. September 2026, 11:36 UTC (`date -u`; **keine Ampel wechselt** — eine Ablehnung als Nicht-Auftrag sperrt weder Gespräch noch Angebot). Davor 19. September 2026, 11:18 UTC (`date -u`; **keine Ampel wechselt** — die NMCP-Zeilen auf den Stand des Tages gemessen: 20 Dienste im Handshake, 7 mit viertem Ausgang, und der Quotenabgleich schweigt, weil seine Zähler jeden Neustart verlieren). Davor 19. September 2026, 00:49 UTC (`date -u`; **keine Ampel wechselt** — eine Bedarfsaussage wird seltener eine Notiz, Regel A der Vorprüfung durch eine Ausnahme für die laufende Liste ersetzt). Davor 18. September 2026, 23:29 UTC (`date -u`; die Audit-Pflicht umgebaut: jeder Dienst schreibt sein Audit selbst, keine Ampel wechselt). Davor 18. September 2026, 23:24 UTC (`date -u`; **keine Ampel wechselt** — Scheibe 12 E2 im Betrieb: 4 von 4 Termine zum Eintragen angeboten und beim Namen genannt). Davor 18. September 2026, 22:13 UTC (`date -u`; **keine Ampel wechselt** — das Angebot gilt der angebotenen Sache). Davor 18. September 2026, 21:41 UTC (`date -u`; **keine Ampel wechselt** — das Angebot folgt einer Wahrscheinlichkeit statt der Schwelle 0,9). Davor 18. September 2026, 21:04 UTC (`date -u`; **keine Ampel wechselt** — zwei Fehler aus der zweiten Kontrolle behoben: Uhrzeit bei der Zustimmung, Ende einer Spanne). Davor 18. September 2026, 09:01 UTC (`date -u`; **keine Ampel wechselt** — die Zustimmung auf ein offenes Angebot kommt an: 3 von 3 richtige Termine im Betrieb). Davor 18. September 2026, 08:31 UTC (`date -u`; **keine Ampel wechselt** — Termine mit Spanne bekommen ihr Ende). Davor 18. September 2026, 08:27 UTC (`date -u`; **Scheibe 12 F ⚫ → 🟠** — die Timeline prüft vor dem Anlegen nur noch echte Doppeleinträge; dazu der Korrektursatz aus Teil A). Davor 18. September 2026, 08:21 UTC (`date -u`; **keine Ampel wechselt** — Scheibe 12 E2 gebaut und im Betrieb gemessen, der Ausgang eines Dienstes steht wieder am Turn). Davor 18. September 2026, 08:11 UTC (`date -u`; **sechs Ampeln wechseln** — `B−1` ⚫ → 🟢, Konfigurations-, Schicht-, EVA- und Default-Prüfung ⚫ → 🟢, Entscheidungs-Eintrag je Knoten 🔴 → 🟠; die Audit-Pflicht ist gebaut und bleibt 🔴 an `RECHERCHE-OHNE-AUDIT`). Davor 18. September 2026, 07:43 UTC (`date -u`; **keine Ampel wechselt** — E3 gebaut, die Sachlage kürzt nicht mehr, Router und Planner im Pipeline-Log, ein Dienst meldet seine Verifikation). Davor 17. September 2026, 21:51 UTC (`date -u`; **die Zustimmung trifft die angebotene Sache** — Ziel und Zeitangabe kommen aus ihr, im Betrieb 1 von 2 Läufen mit Termin). Davor 17. September 2026, 21:06 UTC (`date -u`; **E1c und E1d nachgetragen** — die Zustimmung nimmt die Sachen des Angebots mit, und eine offene Rückfrage verschluckt keinen eigenen Auftrag mehr; beides im Betrieb gemessen). Davor 17. September 2026, 20:38 UTC (`date -u`; **Scheibe 12 E ⚫ → 🟠** — E1 gebaut: eine Zustimmung wird nur zum Auftrag, wenn ein Angebot offen ist; im Betrieb gemessen). Davor 17. September 2026, 19:40 UTC (`date -u`; **keine Ampel wechselt** — Scheibe 12 D ist im Betrieb bestätigt (Nähe je Turn, `[LAGE]` im Prompt, Planner-Reihenfolge, Zustimmung über die Nähe), aber es wurde nichts geschrieben; ein Defekt für neue Paare behoben). Davor 17. September 2026, 17:52 UTC (`date -u`; **keine Ampel wechselt** — Notizen nur auf ausdrücklichen Auftrag: die Klassifikation lehnt Aussagen ab, 12 → 8 von 12 geschrieben; die Sperre am Empfang gemessen und zurückgenommen). Davor 17. September 2026, 14:27 UTC (`date -u`; **keine Ampel wechselt** — Scheibe 12 D2: der Router liest die Lage, der Objektbezug reist zum Dienst; im Labor gemessen, im Betrieb nicht). Davor 17. September 2026, 10:58 UTC (`date -u`; **eine Ampel wechselt: Scheibe 12 D ⚫ → 🟠** — D1: der Planner fragt die Dienste nach dem Objekt, die Zeitangabe wählt keinen Dienst mehr). Davor 17. September 2026, 06:01 UTC (`date -u`; **keine Ampel wechselt** — Datenbereinigung: die Objektnamen im Eigenschaftsgedächtnis ohne Sternchen, 14 von 14 Eigenschaften wieder auffindbar). Davor 16. September 2026, 22:31 UTC (`date -u`; **keine Ampel wechselt** — die Objektwahl der Lage ist gebaut: die Sache statt ihres Rahmens, bei Handlungen die Handlung, Namen ohne Auszeichnung; dazu behoben: die JSON-Reparatur schnitt gültige Antworten ab). Davor 16. September 2026, 21:10 UTC (`date -u`; **keine Ampel wechselt** — das Notizen-Merkmal ist nachgeeicht und bleibt: keine von zehn Fassungen gewinnt; die Grenze liegt im Objekttext der Lage). Davor 16. September 2026, 20:58 UTC (`date -u`; **keine Ampel wechselt** — entschieden und im Schatten umgebaut: je Zettel für sich, ohne Abstand; im Grenzfall beide Dienste, eine Ablehnung hält den anderen nicht auf). Davor 16. September 2026, 20:50 UTC (`date -u`; **keine Ampel wechselt** — die Regel je Zettel ohne Abstand ist gerechnet: 0 von 60 nur beim falschen Dienst, 16 von 60 an beiden, das Notizen-Merkmal trennt kaum; Konzept §4 Teil C2). Davor 16. September 2026, 20:19 UTC (`date -u`; **keine Ampel wechselt** — Scheibe 12 C trägt C2: die Nähe im Schatten, Eichung im Betriebscode exakt reproduziert, ein echter Turn protokolliert; offen vor D ist, ob der Abstand als Verhältnis zweier Zettel zulässig ist). Davor 16. September 2026, 19:43 UTC (`date -u`; **eine Ampel wechselt: Scheibe 12 C ⚫ → 🟠** — die Anmeldung trägt das Objekt-Merkmal, Timeline und Notizen mit geeichtem Wortlaut und Vektor beim Start; die Nähe-Rechnung fehlt). Davor 16. September 2026, 19:14 UTC (`date -u`; **keine Ampel wechselt** — die Zeile Scheibe 12 C trägt die Eichung: zwei Schwellen statt einer, 32 von 33 zugestellten richtig, Merkmalstext gewählt auf der einen und geprüft auf der anderen Hälfte). Davor 16. September 2026, 19:00 UTC (`date -u`; **keine Ampel wechselt** — die Zeile Scheibe 12 C trägt jetzt auch die Messung der Nähe: 80,0 % ohne Schwelle, 92,3 % auf zwei Dritteln der Fälle mit Schwelle 0,04). Davor 16. September 2026, 17:33 UTC (`date -u`; **keine Ampel wechselt** — die Zeile Scheibe 12 C trägt das Kriterium der Zuordnung: Handlung oder Ereignis mit Zeitpunkt → Timeline, Sache oder Zustand mit Zeitbezug → Notizen; dazu ein neuer Defekt am Planner). Davor 16. September 2026, 16:51 UTC (`date -u`; **keine Ampel wechselt** — die Zeile Scheibe 12 A trägt die zweite Entscheidung: Eine Behauptung, die beide Korrekturrunden übersteht, wird nicht entfernt, sondern mit einem Korrektursatz versehen; dazu die Marke am Turn und der Nachtrag am Gedächtnisknoten. Nicht gebaut). Davor 16. September 2026, 15:10 UTC (`date -u`; **Scheibe 12 B ⚫ → 🟠** — der Verlauf kürzt keinen Beitrag mehr, die Grenze greift über das Fenster; 7213 → 0 abgeschnittene Beiträge über 1439 Fenster, Suite 3794). Davor 16. September 2026, 09:43 UTC (`date -u`; **keine Ampel wechselt** — die Zeile von Scheibe 12 A trägt den Rest, der aus der Entscheidung vom 15.09.2026, 21:26 UTC folgt: der Bestandsabgleich vor der Korrektur ist beschlossen und ungebaut). Davor 15. September 2026, 19:13 UTC (**keine Ampel wechselt** — die Zeitparser-Zeile trägt den zweiten Zug: Punkt als Trenner, unmögliche Werte, die genannte Uhrzeit, das ISO-Datum an dateparser, Tageswort gegen Wochentag; 137 Tests). Davor 15. September 2026, 15:56 UTC (`date -u`; **keine Ampel wechselt** — die Zeitparser-Zeile trägt die Stunde ohne „Uhr", 105 Tests und die Messung nach Erzeuger). Davor 15. September 2026, 11:43 UTC (`date -u`; **Scheibe 12 A ⚫ → 🟠** — gebaut, bezeugt, am Bestand geeicht und in der Korrekturrunde gemessen, das Ziel noch nicht erreicht; `tribunal` und `responder` nachgezogen, beide bleiben 🔴). Davor 14. September 2026, 19:52 UTC (`date -u`; **keine Ampel wechselt; sechs Zeilen neu** — Scheibe 12 des Lage-Konzepts als Teile A–F auf ⚫; die Timeline-Zeile bleibt 🔴 mit dem Auftrag als Bedingung des Schreibens und einer neuen roten Ursache: eine Dauer ist nicht speicherbar). Davor 13. September 2026, 15:55 UTC (`date -u`; **Lage-Schicht nach der zweiten Kontrolle nachgezogen** — drei Fehler, die kein Zeuge sah, behoben; Zeugenzuordnung und Zahlen berichtigt; die Ampel bleibt 🟠). Davor 15:11 UTC (`date -u`; **die Lage-Schicht wechselt von 🔴 auf 🟠** — der Blocker `LAGE-FORMPRUEFUNG-UNVOLLSTAENDIG` ist behoben; **Scheibe 11, das Eigenschaftsgedaechtnis**, gebaut und gemessen; der Kontext-Tab liest die Blase ueber dieselbe Formpruefung). Davor 12. September 2026, 23:22 UTC (`date -u`; **Ausfallmeldung nennt ihre Kennungen**, der Client gibt die Frage frei, 30 Client-Zeugen). Davor 22:54 UTC (**Zuordnung im Client:** eine offene Frage macht Antworten an andere Absender nicht mehr zu `fremd`, 28 Client-Zeugen). Davor 21:47 UTC (**Wissensfragen am Rad entschieden** — Pflicht zuerst, außer die Neugier hat im Zuwendungsrad Anlass). Davor 21:26 UTC (**GV4: alle vier Bauteile gebaut**, die Ampel bleibt rot — Lücken passen etwa zur Hälfte). Davor 20:53 UTC (**GV4 Bauteil 3: Themen als Lücke beim Nutzer**, 0 von 34 Lücken Vermerke über Nova). Davor 20:31 UTC (**GV4 Bauteil 2: offene Fragen nach Nähe**, 0 in 11 Nutzerturns eines Abends ohne Sachthema, 33 von 38 passend auf einer Stichprobe). Davor 20:20 UTC (**GV4: die Quellen-Naht ist gebaut**, 16 LZG / 19 KZG statt 77 / 6, die Ampel bleibt rot). Davor 19:50 UTC (**GV4 faellt auf rot** — die Luecken im Prompt sind zu 67 % Vermerke ueber Novas eigene Aeusserungen, 15 Betriebsturns ausgewertet). Davor 19:30 UTC (**die Lage-Schicht steht auf rot** — ein Betriebsturn ist abgebrochen, weil die Formpruefung des Artefakts die drei juengeren Felder deckt und die zwei aeltesten nicht: `LAGE-FORMPRUEFUNG-UNVOLLSTAENDIG`, Blocker, mit einer Absichtsfrage davor. Suite unveraendert **3491**). Davor 12. September 2026, 16:20 UTC (`date -u`; **Tor 3 misst den Kandidaten** — die Kern-Naehe entsteht in beiden Suchen ohne weiteren Modellaufruf; alle Werte eines Stapels verschieden, und das Paar mit vorher null Durchlass laesst 6 von 8 durch. Dabei hat der Eingriff die KZG-Suche getoetet — 0 Kandidaten bei 3544 Schluesseln, gefunden am Bestand und nicht von der gruenen Suite. Suite **3491**). Davor 12. September 2026, 15:45 UTC (`date -u`; **`kreativ` wird vergeben** — Wertelegende in beiden Perzeptions-Prompts: 30 von 30 auf den Kreativ-Reizen gegen eine Nulllinie von 1 von 30, und ueber das Spektrum aller zehn Modi **23 von 30 wie zuvor** bei **0** falsch vergebenen `kreativ`. Suite **3471**). Davor 12. September 2026, 15:05 UTC (`date -u`; **die Rundung, die eine Decke setzte, ist weg** — `math.floor(laenge + 0.5)` statt `round`; Laenge 3 steigt von 116 auf 141 und Laenge 0 faellt von 123 auf 80 ueber 1434 Rohturns, die Tor-Quote bleibt bei 36,6 %. Vorhersage auf den Turn getroffen, Gegenprobe 4 von 4. Suite **3463**). Davor 12. September 2026, 14:01 UTC (`date -u`; **die Spreizung der Resonanz je Paar ist kein Defekt** — Setzung des Eigentuemers als `F-PAAR-2`, und ihre Tatsachenhaelfte ist gemessen: Novas Kern liegt in **6 von 7** Paaren am naechsten am eigenen Menschen, ihre Kerne streuen aber nur rund 61 % so weit wie die Menschen. Das Paar ohne Resonanz ist dasselbe, in dem die Anpassung fehlt. Nichts gebaut, Suite unveraendert **3454**). Davor 12. September 2026, 13:30 UTC (`date -u`; **die vermutete Ursache der Resonanz-Spreizung ist gemessen und haelt nur zur Haelfte** — die Zerlegung des Kerns in Facetten hebt jeden Median um 0,03 bis 0,10, laesst die Spreizung zwischen den Paaren aber bei 0,19. Mass und Paar sind zwei Fragen. Nichts gebaut, Suite unveraendert **3454**). Davor 12. September 2026, 13:05 UTC (`date -u`; **beide Tore des Luecken-Pfades sind vermessen, und beide tragen eine ungesetzte Decke** — Laenge 3 ist in den drei fachlichen Modi arithmetisch ausgeschlossen (794 von 1434 Turns liegen dort), und die globale Resonanzschwelle 0,30 laesst bei zwei von sieben Paaren nichts durch. Nichts gebaut, Suite unveraendert **3454**). Davor 12. September 2026, 10:45 UTC (`date -u`; **der Luecken-Pfad sagt jetzt, wo er aussteigt** — drei Tore hintereinander, und keines meldete seine Zahl; die Resonanz-Schwelle stand auf einem ungemessenen Startwert zwischen p99 und Maximum. Suite **3454**). Davor 12. September 2026, 09:20 UTC (`date -u`; **die Wissensluecken haben einen Schliesspfad** — 125 von 1908 geschlossen, weil ihr Thema woertlich unter den bekannten steht; die Aehnlichkeits-Schwelle ist vorher gemessen und verworfen, weil bekannte und offene Themen ueberlappen (0,490 gegen 0,441). Suite **3441**). Davor 11. September 2026, 16:35 UTC (`date -u`; **der Uebergangsblock ist im Betrieb belegt** — Naehe 0,36 und 0,47, beide mit genanntem Wechsel; die Schwelle 0,55 liegt dabei **am oberen Rand** der erreichbaren Naehen — 3 von 3530 gerechneten Paaren darueber, **aber zugestellt wird das Maximum**, und das liegt in 2 von 5 Kontexten darueber. Suite 3417 gruen, 0 uebersprungen). Davor 11. September 2026, 16:00 UTC (`date -u`; **der zugestellte Impuls schliesst an das Gespraech an** — die Abhilfe vom 13.08. hatte den Anschluss ganz verboten, um die falsche Zuschreibung zu verhindern; gemessen ueber 156 Impuls-Turns trugen **19 %** eine woertlich uebernommene Passage und **4 %** kamen im Berichts-Rohformat. Dazu die **Bruecke fuer ferne Funde** (Naehe unter 0,55) und **zwei getrennte Schalter** fuer Agenten und Zustellung. **Pausiert heisst nicht still:** Ein Recherche-Agent lief zehn Minuten ueber die Pause hinweg, der Status meldete `pausiert` — seither `bereit_fuer_messung`, und der Temperaturwaechter steht im gemeinsamen Werkzeug. Suite **3417**.). Davor 11. September 2026, 06:00 UTC (`date -u`; drei Zahnraeder nachgezogen — Pixie-Pause, emotionale Gravitation als vierter Salienz-Antrieb, Frische-Sortierung der Qualitaetsprofile. Suite **3396**.). Davor 10. September 2026, 20:26 UTC). Davor 10. September 2026, 20:26 UTC (`date -u`; alle sechs Wertefelder der Perzeption laufen durch den Kanon-Zug — von 16.164 Feldwerten stehen 327 ausserhalb (2,0 %). Suite **3356**). Davor 10. September 2026, 20:26 UTC (`date -u`; alle sechs Wertefelder der Perzeption laufen durch den Kanon-Zug — von 16.164 Feldwerten stehen 327 ausserhalb (2,0 %). Suite **3356**). Davor 10. September 2026, 20:26 UTC (`date -u`; alle sechs Wertefelder der Perzeption laufen durch den Kanon-Zug — von 16.164 Feldwerten stehen 327 ausserhalb (2,0 %). Suite **3356**). Davor 10. September 2026, 18:53 UTC (`date -u`; **die Messvorschrift hatte den gemessenen Effekt erzeugt** — die Vektorlaenge stand in einer wissenschaftlichen Reihe 116-mal von 119 auf 1, ueber ein entworfenes Spektrum dagegen oeffnet das Tor in **51,2 %** der Turns. `F-MESS-1` erzeugt `lernmodus` + `distanz` + `fachlich`, also genau die drei Groessen, die die Laenge druecken. Dabei `MODUS-KREATIV-WIRD-NIE-VERGEBEN` neu: **0 von 1347**. Das Strategie-Tor hinterlaesst seither eine Spur. Suite **3329**.). Davor 9. September 2026, 20:43 UTC (`date -u`; **der Turn-Abschluss haengt nicht mehr an den `pending_writes`** — ein frueher Rueckkehrpfad im Dispatcher kostete **15 von 227** Turns mit erzeugter Antwort ihre `turn_roh`-Zeile (6,6 %). Dazu eine Eingangsspur: Der Knoten schrieb zuvor **ausschliesslich bei Erfolg** und war an genau der Stelle unbeobachtbar, deren Ausbleiben er protokollieren soll. `TURN-ROH-FEHLT-BEI-ERZEUGTER-ANTWORT` bleibt offen — eine Ursache ist behoben, ein zweiter Weg ist ungemessen. Suite **3324**.). Davor 9. September 2026, 18:45 UTC (`date -u`; **`GRAVITATIONSTERM-OHNE-OBERGRENZE` behoben** — die Normierung sitzt im Erzeuger, der HumanGraph-Boost fuellt auf statt zu addieren; `gekappt` faellt von **160 von 187** auf **0 von 4**, `eigen_pfad` von bis 4,097 auf bis 0,965. **Die eine Absichtsfrage war gegenstandslos** — das Praegungstor faellt von 125 auf **124** Faeden, nicht um ein Fuenftel; die Vorher-Rechnung stand auf der falschen Schwelle, der falschen Zaehlebene und dem falschen Leser. Dazu bewacht die Nahtspannen-Tafel jetzt den Term selbst. Suite **3311**.). Davor 9. September 2026, 17:55 UTC (`date -u`; **der Betrieb laeuft vollstaendig lokal** — der Fernanbieter hob den Preis in vier Tagen von $0,04998 auf **$0,44000** je Million und liess den Rabatt fallen; Entscheidung des Eigentuemers, ihn nicht mehr zu verwenden. Dazu behoben: `cost_usd` bekam das Modell nicht und buchte **1,16 USD** fuer 5210 lokale Aufrufe. Suite **3286**.). Davor 9. September 2026 (`date -u`; **eine Naht, die im Bestand ruhig aussah, bricht unter Last** — `eigen_pfad` von 77,7 % auf **393,4 %** Ausschoepfung ueber 196 Turns; Ursache ist eine unbeschraenkte Summe im Gravitationsterm, die in 55,6 % der Faelle die Salienz-Bewertung ueberschreibt. Abhilfe und Vorher-Rechnung an beiden Lesern stehen. Dazu: die Lueckentabelle hat seit dem 08.09. einen Leser, sein Betriebsbeleg steht zur Haelfte. Suite **3277**.). Davor 8. September 2026 (`date -u`; **das Neugier-Konzept gab die falsche Auskunft über seinen eigenen Gegenstand** — zwei Sätze des Vermerks vom 27.07. sind gegen den Code widerlegt, `neugier_vektor` ist gebaut und hat keinen Leser (`NEUGIER-VEKTOR-OHNE-LESER`), und die Schwelle aus §3.4 existiert nicht — wäre sie gebaut, stünde der Mechanismus still (Maximum 0,1148 gegen Schwelle 0,25). Kein Produktivcode, Suite unberührt bei **3264**.). Davor 7. September 2026, 21:24 UTC (`date -u`; **die Pruefform zu `UMFANGSREGLER-BINDET-NICHT` ist gefahren** — 16 Turns mit und ohne Block, und der Unterschied zwischen den Armen (1,47) ist **kleiner als die Streuung innerhalb eines Arms** (3,38 bis 6,03). Dazu ein Messschalter in Redis, der Korridor-Beleg des Responders und `TURN-ROH-FEHLT-BEI-ERZEUGTER-ANTWORT` neu. Suite **3264**.). Davor 7. September 2026, 19:30 UTC (`date -u`; **ein neues Gespraechsmodell im Feldtest** seit 19:07:49 UTC, und `UMFANGSREGLER-BINDET-NICHT` ist an 749 Turns belegt. Suite **3250**.). Davor 7. September 2026, nachmittags (`date -u`; **drei Gegenstaende nebeneinander gemessen, und sie tragen dieselbe Krankheit** — eine Groesse wird gerechnet, gespeichert und bewegt nichts. Neugier von 🟢 auf 🔴; drei Zeilen ⏫ Band A). Davor 7. September 2026, 14:19 UTC (`date -u`; **der Faszinations-Leser ist im Betrieb belegt** — `fragen` 0,5837 → 0,6207 bei exakt null Bewegung auf den drei unbeteiligten Groessen. Suite **3250**.). Davor 7. September 2026 (`date -u`; **die Faszination hat einen Leser** — `wissbegier` wirkt nicht mehr themenblind. Der neutrale Punkt stand zuerst auf 0,50 und war gegen die falsche Verteilung geeicht; die zweite Kontrolle fand es, kein Zeuge. Suite **3250**.). Davor 6. September 2026, 21:00 UTC (`date -u`; **die Faszination rechnet zum ersten Mal im Turn** — der Engpass war die Laengenschwelle, die 0 von 95 gelesenen Traegern als Kandidat offen hielt. Suite **3225**.). Davor 6. September 2026, 19:45 UTC (`date -u`; **die Entwertung ist im Betrieb belegt** — Zyklus 19:42, 4 Belege entwertet, im gespeicherten Kern ohne Anfuehrungszeichen. Suite **3221**.). Davor 6. September 2026, 19:05 UTC (`date -u`; **ein Beleg ohne Fundstelle verliert seine Anfuehrungszeichen** — `zitate_entwerten` in `_llm_call`; 32 von 282 Zitaten an 20 gepinnten Kern-Laeufen entwertet, danach 0 ohne Fundstelle, kein gedecktes Zitat verloren. Suite **3220**.). Davor 6. September 2026, 17:55 UTC (`date -u`; **die Zitatregel wirkt gegen das Ziel des Betriebs nicht** — gepinnt 18 % → 16 %; damit traegt keine der fuenf Prompt-Fassungen dieses Tages.). Davor 6. September 2026, 17:45 UTC (`date -u`; **Betriebsbeleg fuer Audit und Deckungspruefung**, und ein Messgeraet-Fund: drei Werkzeuge massen ohne das Anbieter-Pinning des Betriebs. Suite **3202**.). Davor 6. September 2026, 16:30 UTC (`date -u`; **der Stand der Faszinations-Abdeckung ist gemessen** — 72 von 3430 Knoten profiliert; im Bestand rechnet sie, im Turn bleibt sie leer. Suite **3202**.). Davor 6. September 2026, 16:15 UTC (`date -u`; **die Zitatregel senkt die unbelegten Zitate auf ein Zehntel** — 24 % → 10 % und 21 % → 9 %, n = 20 je Fassung; Suite **3201**.). Davor 6. September 2026, 15:30 UTC (`date -u`; **der CharakterAgent schreibt sein Audit** — `gestartet`/`erledigt`/`fehler` im `hintergrund_log`, nur bei echter Arbeit; Suite **3197**.). Davor 6. September 2026, 14:35 UTC (`date -u`; **ein Dauerwort wird beanstandet** — die Deckungspruefung sitzt an der Ausgabe der Destillation und schlaegt an 3 von 20 echten Profilen an; Suite **3191**.). Davor 6. September 2026, 14:05 UTC (`date -u`; **die Rueckkopplung im Profil waechst nicht** — elf Tage Drift-Reihe, 16,2 → 14,6 je 1000 Woerter; Prioritaet des Eintrags berichtigt, kein Code beruehrt.). Davor 6. September 2026, 13:40 UTC (`date -u`; **der Prompt-Weg gegen die Verallgemeinerung ist gemessen und ausgeschlossen** — vier Fassungen, bei n = 20 kein Unterschied ueber die Streuung; Code unveraendert, Suite **3181**.). Davor 6. September 2026, 13:20 UTC (`date -u`; **zwei Funde der Profil-Durchsicht sind Kennungen** — `PROFIL-VERALLGEMEINERT-EINZELBELEG` und `PROFIL-VERSTAERKT-WAS-ES-BESCHREIBT`, nach der Entscheidung des Eigentuemers, dass die Verallgemeinerung nicht gewuenscht ist. Nur Register, **kein Code**; Suite unveraendert **3181**.). Davor 6. September 2026, 11:31 UTC (`date -u`; **der Profil-Erzeuger hat einen Aufrufer, der ihn auch laufen laesst** — er stand seit dem 03.09. in der `cpu`-Spur, wo das Sprachmodell verriegelt ist, und profilierte **nie einen Traeger**. Eigener Agent in der `llm`-Spur, taeglich; im Betrieb **20 von 20** gegen vorher 0 von 20. Suite **3181**.). Davor 6. September 2026, 10:52 UTC (`date -u`; **die vierte Fundstelle derselben Klasse geschlossen** — `antwortendes_modell(rolle)` loest alle drei Worker-Rollen auf; **24 Rad-Erhebungen** trugen `qwen36-cpu`, obwohl DeepSeek gemessen hat. Ein zweiter, folgenloser Fehler stand daneben: das **Analyse**-Modell fuer einen `sprache`-Aufruf. Bestand nicht berichtigt. Suite **3178**.). Davor 6. September 2026, 10:35 UTC (`date -u`; **die Kostenanzeige steht auf 🟢** — zweiter Beleg mit vollstaendiger Zeile und beim Oeffnen gefuellt; die Verbindungsanzeige wird nicht verdraengt, der erste Beleg war ein Bildausschnitt). Davor 6. September 2026, 10:29 UTC (`date -u`; **die Kostenanzeige ist beim Oeffnen schon gefuellt** — `GET /drive/kosten`, vom Client in einem eigenen Thread geholt; der Posten `turn` nennt den zuletzt abgerechneten Turn, **gefiltert gegen `hintergrund`**, sonst stuende dort die Summe aller Hintergrundlaeufe. Dabei die Rundung vereinheitlicht: Tag und Monat trugen denselben Wert und sahen durch verschiedene Nachkommastellen aus wie zwei. Suite **3172**.). Davor 6. September 2026, 10:20 UTC (`date -u`; **was der Betrieb kostet, steht in der Fusszeile** — Verbrauch je Modellaufruf als `art='token'` im Pipeline-Log, drei Summen im Client, Preiswaechter als zehnter Schritt des Tageslaufs. **Zwei Befunde trugen den Bau:** `log_token` hatte seit je **keinen Aufrufer** (0 Zeilen im Bestand), und die Kontextvariable **erreicht den Worker nicht** — seine Schleife traegt den Kontext des Serverstarts. Betriebsbeleg 10:12 UTC, Tagessumme **$0,0075**. Suite **3170**. **Der Client ist nicht gelaufen.**). Davor 6. September 2026, 09:45 UTC (`date -u`; **ein gueltiger Wert ohne Sektor** — `mitgefuehl` gehoert nach Setzung des Eigentuemers zu `traurigkeit`; **die Zeile in der Synonymkarte reichte nicht**, weil `sektor_faktor` direkt in `EMOTION_SEKTOR_MAP` schlug und dieselbe Luecke ein zweites Mal im Strang-Histogramm sass. Beide Naehte loesen jetzt auf. Suite **3159**.). Davor 6. September 2026, 09:06 UTC (`date -u`; **derselbe Prompt, das dreifache Profil** — der Kern-Prompt stand unveraendert, das Modell darunter nicht: **3578 Zeichen am 12.08. gegen 8587 heute**. Der offene Prompt traegt seither einen Richtwert von rund 3000 Zeichen — der Korridor der Gegenprobe vom 11.08.2026 (3288/2545), **kein zurueckgekehrter Deckel**. Dabei **drei Funde** an den Profilen. Suite **3156**.). Davor 5. September 2026, 20:16 UTC (`date -u`; **die Laenge stand schon im Zustand, nur las sie niemand** — die Regie fordert 60–175 Zeichen, das Fernmodell lieferte **996 im Median**. Ein Override auf der Prompt-Modellebene, in Saetzen statt Zeichen formuliert, haelt ihn im Korridor (168/258). **Ausdruecklich ein Provisorium**: Der Korridor ist fuer Fachfragen zu eng und weitet sich erst mit dem Faszinations-Leser (§11a). Dabei ein verschachteltes Prompt-Verzeichnis gefunden — **vierte Fundstelle** der Modellnamen-Klasse, und die einzige aus einer bestehenden Pruefung. Suite **3155**.). Davor 5. September 2026, 19:45 UTC (`date -u`; **eine Deutungsebene ohne Subjekt sucht sich eines** — das Beziehungsprofil vertauschte die Sprechrichtung (*„Er adressiert Nova als 'Chef'"*), weil drei von vier Ebenen keinen Sprecher nannten und ausgerechnet `NAEHE` die **Anrede** zum Merkmal erklaerte. Bestand ueber alle vier Profil-Prompts: **5 von 9 Ebenen ohne Traeger**, alle geschaerft. Gemessen, fuenf Laeufe je Fassung: **alt 3/5 verdreht, neu 0/5**. Zeuge am **gerenderten** Prompt. Suite **3151**.). Davor 5. September 2026, 18:51 UTC (`date -u`; **eine Schreibvariante ist kein unbekannter Wert mehr** — `utils/canon.py` zieht Modellwerte an der Naht der Perzeption auf ihre kanonische Form, additiv und mit Protokoll. Am Bestand gemessen: **12 von 18** Ausreissern gerettet, die sechs Reste sind inhaltliche Luecken (`mitgefuehl` fehlt in Kanon **und** Synonymkarte, `zuversicht` ist ein Sektorname). Dabei die zweite Umlaut-Tabelle in `graph/einwand.py` abgeraeumt. Suite **3145**.). Davor 5. September 2026, 18:12 UTC (`date -u`; **Nova spricht ueber ein Fernmodell** — alle drei Worker auf DeepSeek V4 Flash beim benannten Anbieter, zwei echte Turns, **$0,0014 je Turn**. Dabei der Befund, der es beinahe verhindert haette: **das Modell denkt von sich aus**, und der Trace frisst `max_tokens` — ohne `reasoning_effort="none"` blieben die engen Aufrufe leer. Einbettung bleibt lokal. Suite **3129**.). Davor 5. September 2026, 17:41 UTC (`date -u`; **ein vierter Rueckhalt fuer die Modellschicht, gebaut und nicht gemessen** — `OpenRouterProvider` spricht das OpenAI-Protokoll ueber `httpx`, erzwingt `expect_json` als `response_format` und bildet `think` auf `reasoning` ab; **alle drei Graphen haengen an den Workern** (35 `chat.submit`, 16 `background.submit`, 63 Dateien, kein Chat-Aufruf daneben), der Wechsel ist deshalb eine Umgebungsvariable. Dabei einen quer liegenden Fund vom 23.08.2026 wirksam werden sehen und behoben: **die Prompt-Modellebene hing am konfigurierten statt am antwortenden Modell** — sieben `gemma4-gpu`-Bloecke waeren einem fremden Modell untergeschoben worden. **Dabei umgeworfen: eine Modell-ID ist keine Modellwahl** — 29 Anbieter stehen dahinter, Faktor 8,8 im Preis, vier Quantisierungen; Preis, Kontextfenster und die `response_format`-Annahme standen falsch im Code, weil sie aus der **aggregierten Liste** statt vom Endpunkt kamen. Der Anbieter ist jetzt benannt, der Rueckfall aus, und ein Waechter haelt den Rabatt (64,3 %, **ohne Frist**) gegen den Endpunkt. **Zweite Fundstelle derselben Klasse noch am selben Tag** — die Wahl des Reasoning-Aufraeumers schluesselte ebenso; gefunden von einem Kriterium, nicht von einem zweiten Durchgang. **Kein Schluessel, kein Aufruf, keine Messung.** Suite **3129**.). Davor 5. September 2026, 15:05 UTC (`date -u`; **die Meinung sitzt unter der Faszination, nicht ueber ihr** — Setzung des Eigentuemers: Praegung und Faszination tragen die Meinungsbildung, die Grenze zwischen Haltung und fachlicher Beurteilung laeuft entlang der **Quelle**. Die valenztragende Groesse ist **gebaut und im Bestand** (neun Straenge, alle positiv); die Faszination darueber ist valenzblind. Kein Produktivcode, Suite **3071**.). Davor 5. September 2026, 14:53 UTC (`date -u`; **die Reihe des Bestandslaufs bekommt einen Leser** — `tools/fascination_series.py` beantwortet, ob sie kalibrieren kann; die Zahl der **bewegten Traeger** traegt die Aussage, nicht der Median. Dabei ein Defekt aus dem Bau: Die Protokollzeile trug **`ohne_strang` nicht**, obwohl der Lauf es rechnet und die Rechenkette es seit dem Bau fuehrt — zwei Seiten, die dasselbe beschreiben, nie gegeneinander gehalten. **Die Reihe hat null Punkte**, Punkt 1 kommt im Tageslauf. Suite **3071**.). Davor 5. September 2026, 14:19 UTC (`date -u`; **der Laengenfilter des Qualitaetsprofils ist gemessen und nicht gebaut.** Die Themen trennen nicht (bestes haeufiges Thema 29,2 % bei 106 Vorkommen), die **Eroeffnungsformel** schon (Frageform **0 von 115** lang, Einsichtsformel 56,7 % von 409); der Zeichenschnitt kostet **177 Einsichten** unter 400 Zeichen. Dabei die vorgelagerte Frage aufgeworfen, ob vorab ueberhaupt gefiltert werden soll — **49 von 50 Traegern schlagen voll aus, keine gemessene Null**. Kein Code geaendert, Suite unberuehrt bei **3061**.). Davor 5. September 2026, 10:20 UTC (`date -u`; **zwei Fragen des Eigentuemers, zwei Defekte.** Der Praegungszug mass den **gemittelten Turn** statt des staerksten Segments — dieselbe Klasse wie `FADEN-EMBEDDING-VERDUENNT`, im selben Modul, vier Tage laenger stehengeblieben (`[2x]`). Und die Naehe wurde nie fuer den **Traeger** gemessen: **§10.3a neu, der `strangzug`** — in der Mitte eines Strangs stark, am Rand schwach, mit der Fadenzahl als Gravitation. Ueber 50 Traeger steigt der Median von 0,2828 auf **0,3377**. Suite **3061**.). Davor 5. September 2026, 01:20 UTC (`date -u`; **die Traegerseite bekommt einen eigenen Tageslauf** — ohne Modulatoren, damit die Haelften trennbar werden; erster Lauf 50 Traeger, 7 ohne Bindung, roh bis 0,5249. Dabei ein Konzept-Vorbehalt ueberholt: `state["haltung"]` hat seit dem 12.08. zwei Leser — der Faszinations-Leser wird trotzdem **nicht** gebaut, solange die Groesse 0 ist. Suite **3052**.). Davor 5. September 2026, 01:15 UTC (`date -u`; **die Faszination rechnet im Betrieb — und ihr erster Wert ist 0,0.** Der gelesene Traeger hat 6 Qualitaeten und **0 Bruecken**; dahinter eine unentschiedene Absichtsfrage: zaehlt Lesen als Beruehrung? Die Profil-Auswahl folgt seither der **Lesespur** statt der Bruecke (zweiter Anlauf am selben Tag), Bestand **50 Traeger / 300 Kanten**. Dabei behoben: ein Totalausfall des Profil-Laufs meldete `error: None`. Suite **3047**.). Davor 5. September 2026, 00:36 UTC (`date -u`; **die Faszination laeuft im Turn und findet nichts vor.** Verfall je Dimension gebaut, Erzeuger verdrahtet, **im Betrieb belegt** — und **kein einziger gelesener Knoten trug ein Qualitaetsprofil**: 2 von 36, und nur 7 von 36 passieren den Laengenfilter. Die Profil-Auswahl folgt seither der echten Wiederkehr statt `haeufigkeit` (56,1 gegen 5,5). Ein Verdrahtungszeuge fand dabei, dass der Praegungsknoten sein *immer* nicht hielt. Suite **3044**.). Davor 5. September 2026, 00:15 UTC (`date -u`; **die Faszination rechnet vollstaendig — §10.2, §10.5 und §10.6 gebaut.** 39 Zeugen, Suite **3013**. **Erstlauf ueber 27 Traeger:** 0,5451 bis 0,7580, Median 0,5712, **9 verschiedene Werte**; der Deckel 2,0 nie erreicht und damit nicht pruefbar. **Hauptbefund: die Turn-Modulatoren spannen Faktor 16,2, die Traegerseite nur 2,0** — die Groesse haengt achtmal staerker am Turn als am Traeger. **Sie rechnet, sie wirkt nicht:** kein Schreibpfad, kein Leser.). Davor 4. September 2026, 23:40 UTC (`date -u`; **der erste Betriebsbeleg der Verwendungs-Verstaerkung war stumm.** Zwei echte Turns schrieben `verwendet: 0, naehen: []` — und in dieser Zeile sahen **sechs Ausgaenge gleich aus**, fuenf davon Ausfaelle. Die Zeile traegt seither `naehen_alle`, `knappster_verworfener`, `schwelle`, `deckel`, `ausgang`. Die zwei Zeilen davor einmalig nachgerechnet: knappster verworfener **0,2935** und **0,4334**, beide unter dem Maximum der Zufallsverteilung (0,5305) — **der Nullbefund ist richtig, die Schwelle steht nicht zu hoch**. 8 neue Zeugen, Suite **2974**, Gegenprobe 4/4. **Betriebsbeleg der neuen Zeile steht aus (Neustart noetig).**). Davor 4. September 2026, 17:10 UTC (`date -u`; **Metakognition auf v0.2 auditiert, und die Ampel der Phase 1 faellt von 🟢 auf 🟠.** Das ZIEL *„jeder Node schreibt seine Entscheidung"* ist an **4 von 11 Knoten** belegt — die sieben stummen haben ueber **154.383 Zeilen** `[gemessen 04.09.2026, laufende DB]` **nicht eine einzige**, und es sind genau die, die **waehlen und urteilen**. Die Mengenschaetzung des Konzepts lag um **Faktor acht** daneben (3.959 statt 500 Zeilen je Tag). `novaberg-memory-synapsen_k.md` §10 gegen die laufende Tabelle nachgezogen: acht Spalten statt zehn, `db_zugriff` statt `db_write`, kein `db_read`, kein `turn_roh`, fehlende Retention-Ausnahme, und *„Lesen wird nicht geloggt"* gegen **5.315** `db_read`-Zeilen. Kein Produktivcode, Suite unberuehrt bei **2966**.). Davor 4. September 2026, 13:00 UTC (`date -u`; **Verstaerkung setzt Verwendung voraus — gebaut am 04.09.2026.** `memory/usage_reinforcement.py`, gerufen vom Dispatcher nach `_turn_roh_schreiben`. Schwelle **0,55** aus 75.975 Paaren abgeleitet (P99,9 = 0,5412), Deckel 3. `[gemessen]` gegen den Bestand: **13 von 15 Turns** verstaerken, **24 von 30** nahen Kandidaten genommen, **0 von 45 fremden**. Die Segmentregel ist **vor dem Bau widerlegt** (25 von 25 Antworten ergeben ein Segment, Segmentierung 1,53 s im Turn). `tests/test_usage_reinforcement.py` (16), Suite **2966**. **Betriebsbeleg steht aus.**). Davor 4. September 2026 (`date -u`; **Verstaerkung setzt Verwendung voraus** — `novaberg-memory-synapsen_k.md` §7.1a neu: verstaerkt wird, was Nova in der Antwort hergenommen hat, und zwar im **Dispatcher**, nicht im Responder. **Drei Kennungen**: der KZG-Eintrag wird entgegen §7.7 nach der Promotion nicht geloescht und matcht seinen eigenen Knoten (**95,2 % `cosine = 1.0000`**, bis zu 91 je Turn), die thematische KZG-Verstaerkung verstaerkt Nachbarn statt Verwendetes (`haeufigkeit` Mittel 8,1, Max 110), und der Dispatcher ruft `knoten_verstaerken` **0-mal**. Kein Produktivcode geaendert, Suite unberuehrt bei **2945**.). Davor 3. September 2026, 21:30 UTC (`date -u`; **die abstrakte Schicht bekommt ihre Qualitaetsseite** — `abstrakt_knoten` und `traeger_qualitaet` gebaut, Erzeuger als achter Schritt des Tageslaufs, `merkmalszug` als Leser; **25 Traeger, 150 Kanten** im Bestand. **Hauptbefund negativ: die Dominanz kollabiert auf `komplexitaet`, 23 von 25** — gegen die Handmessung des Konzepts; die Textlaenge ist als Ursache ausgeschlossen. Zwei Defekte dabei: ein Leerzeichen im Modellschluessel (behoben, im Bestand belegt) und zwei Zeugen, die ihre Erwartung aus dem Prueflig bezogen. Suite **2945**.). Davor 3. September 2026, 20:35 UTC (`date -u`; **die zweite Kontrolle hebt den Hauptbefund der Messreihe auf** — Novas negatives Register existiert (35 von 2825 Knoten im echten Paar, 1,24 %), und der Nullbefund war der **Erwartungswert** (0,27 bei 22 Gelegenheiten seit es das Tor gibt). Kein Produktivcode, Suite 2901.). Davor 3. September 2026, 20:25 UTC (`date -u`; **vier Messturns gegen das Produktivsystem** — kein Faden, aber die **ersten vier `praegung_zug`-Zeilen im Betrieb**. Befunde: Nova hat auf negative wissenschaftliche Reize **kein negatives Register** (viermal `neutral`/`neugierig`); die **Bauart** des Reizes hebt die Salienz um Faktor 2–4; die Faden-Emotion kommt aus **Novas Antwort**, nicht aus dem Reiz. Seiteneffekte null.). Davor 3. September 2026, 19:45 UTC (`date -u`; **Messreihe gegen die Rechnung der Praegung** — vier Reihen mit echten Eingaben: **47,9 % des Korpus ohne Sektor** mit drei Ausreissern (Umlaut, Sektorname als Emotionswert), das Tor 6 von 60 (10,0 %), ein Log, der Urteile verschiedener Schwellen-Generationen mischt. **Dabei einen Defekt von heute Vormittag gefunden** — eine Warnung, die 47,9 % des Bestandes gemeldet haette — und **eine eigene Aussage berichtigt**: Das Tor hat sehr wohl einen negativen Faden durchgelassen. Suite **2901**.). Davor 3. September 2026, 19:30 UTC (`date -u`; **Scheibe 6 — die Einfaerbung**: dieselbe Faltung mit `t x sektor_faktor`, negative Sektoren 1,5; 11 Zeugen, Suite **2900**. **Der Bestand kann sie nicht zeigen — kein einziger Faden ist negativ, groesster Abstand 0,000000.** Der Sektorfaktor kommt aus der Rad-Asymmetrie, nicht aus `EMOTION_AROUSAL_DECAY`, deren Werte den Bias umkehren wuerden.). Davor 3. September 2026, 18:57 UTC (`date -u`; **Scheibe 5 — der Praegungszug**: `1 + 0,6 · max(sim · gewicht · ladung)` je Turn, Vermeidung faellt heraus, `unbestimmt` zaehlt halb (Vorgabe des Eigentuemers); 15 Zeugen, Suite **2889**, **gegen den Bestand** an fuenf Faeden **1,3087 bis 1,3487**, Kreuzprobe **1,0693** — der **Betriebsbeleg** kam erst um 20:25 UTC, vier `praegung_zug`-Zeilen aus echten Turns. **Dabei gefunden: toter Code, den keiner der 15 Zeugen hielt — die Gegenprobe fand ihn.**). Davor 2. September 2026, 18:45 UTC (`date -u`; **die Valenz bekommt Zwischenstufen** — `EMOTION_VALENZ` mit 16 Werten nach Russell statt ±1 aus der Sektorgruppe; sie traegt damit **mehr als die Salienz bei halbem Gewicht**, weil die durch das Tor vorselektiert ist. Suite 2874, am Strang 1,000 → **0,8375**). Davor 2. September 2026, 14:30 UTC (`date -u`; **Scheibe 4 — die Ladung eines Strangs**; Salienz, Valenz und Anzahl nach Vorgabe des Eigentuemers, die Konzeptfassung abgeloest; 16 Zeugen, Suite 2872, gemessen **0,69476** bei zeichengleicher Vorhersage. **Dabei gefunden: eine Abfrage, die Paare statt Faeden zaehlte, bei 16 gruenen Zeugen.**). Davor 1. September 2026, 20:48 UTC (`date -u`; **Scheibe 3c — die Richtung eines Strangs**, gerechnet und nicht gespeichert, weil das Rad Zustand ist; 16 Zeugen, Suite 2856. Novas Konfrontationsmass **+0,5379** — und damit trennt die Rad-Regel heute nichts. **Zwei Nebenbefunde:** der Tageslauf-Zeuge fing den sechsten Schritt wieder nicht ab, und ein Einmal-Prozess schreibt keine Protokollzeilen bei Erfolgsmeldung.). Davor 1. September 2026, 20:00 UTC (`date -u`; **Scheibe 3b — das Sektor-Histogramm des Strangs**; acht Zahlen im Bestand statt eines Mittelwerts, der die Ambivalenz loeschen wuerde; 12 Zeugen, Gegenproben 2/2 und 1/1, Suite 2840. Vorhersage und Messung zeichengleich, aber alle vier Faeden positiv — der bimodale Fall ist bezeugt und nicht gemessen. **Die Richtung fehlt und ist eine Absicht.**). Davor 1. September 2026, 19:45 UTC (`date -u`; **Scheibe 3a — Faeden finden ihren Strang**; Zuordnung ueber ein fortgeschriebenes Zentroid, Nachzug im Tageslauf, 13 Zeugen, Gegenproben 1/1 und 1/1, Suite 2828. Vorhersage 1 Strang, Lauf 1 Strang, 4 von 4; die Schwelle trennt gegen 15 fremde Themenknoten. Achsen und Staerke nicht gebaut. **Dabei gefunden: die Suite schrieb ueber zwei Wege in den Produktivbestand.**). Davor 1. September 2026, 19:20 UTC (`date -u`; **der Fehlerpfad eines Agenten erreicht den Nutzer** — der `[AUFGABE]`-Block fuer `status="fehler"` nennt jetzt die Tatsache statt nur die Stoerung; 8 Zeugen, Gegenprobe 5/5, Suite 2815. **im Betrieb belegt** — ein synthetischer Turn nach Neustart — die Antwort nennt den Fehlschlag und reicht die Rueckfrage des Agenten weiter, `timeline` unveraendert bei 83 Zeilen). Davor 1. September 2026, 18:30 UTC (`date -u`; Sitzungsende — **elf Doku-Luecken auf zwei Nachfragen**, davon vier in Registern, die Zahlen aufzaehlen (Kalibrierung, Pruefstand, Wertekonvention); drei Befunde an den Schlusspruefungen selbst (`C16` veraltete Warnung, `C17` las eine Zahl aus einem Commit-Hash, toter Zweig), zwei offene Entscheidungen ins Register, die Stellvertreter-Regel geschaerft. Kein Produktivcode, Suite 2807). Davor 1. September 2026, 17:45 UTC (`date -u`; zwei kleine Schulden — eine widerlegte Zahl im Kommentar der Gravitationsschwelle (0,287 gegen gemessene 0,6640) und der fehlende Katalogeintrag `C25` zur Beweiskette-Regel. Kein Produktivverhalten geaendert, Suite 2807). Davor 1. September 2026, 17:25 UTC (`date -u`; **die Zugkurve dreimal gelegt** — dieselbe Vorgabe, wechselnde Skala; die dritte Fassung steht auf den vier echten Betriebswerten und traegt **+11,1 %** statt +0,4 %, Verhaeltnis nah:fern 32,5 : 1. Beide Stellvertreter lagen um Faktor 2,6 zu hoch und waren sich einig. Suite 2807. **Vier Messwerte aus einem Paar — duennste Grundlage aller drei.**). Davor 1. September 2026, 17:30 UTC (`date -u`; **Novas eigener Zielsog zieht an ihrer Salienz** — statt im `max()` zu konkurrieren, wo er in 4 von 2786 Zeilen entschied; Zug auf die Luecke nach oben ueber eine Logistische, Mittelwert-Entwurf an der Messung gefallen (haette 2785 Zeilen gesenkt). 17 Zeugen, Gegenproben 1/6 dann 5/2, Suite 2806. **Erster Versuch, Stuetzstellen gesetzt statt gemessen.**). Davor 1. September 2026, 15:45 UTC (`date -u`; **der konstante Salienzwert ist aufgeklaert** — kein toter Wert, sondern zwei Eingaenge, die unter `max()` und ohne Zuwendungsrad nichts bewegen konnten; dabei gemessen, dass `ziel_gravitation` den `max()` in **4 von 2786** Zeilen entscheidet. Kein Produktivcode geaendert, Suite 2789). Davor 1. September 2026, 15:30 UTC (`date -u`; **der Verfall bekommt seinen Takt** — `alle_faeden_nachfuehren` als vierter Schritt im Tageslauf, 4 von 4 im Betrieb gefaltet; dabei einen Zeugen gefunden, der den Produktivbestand schrieb, und behoben. 8 Zeugen, Gegenprobe 2/2, Suite 2789). Davor 1. September 2026, 15:10 UTC (`date -u`; **die Faltung bekommt ihren Aufrufer** — `FALTUNG-OHNE-AUFRUFER` am Tag seines Befundes behoben, `ausschlag_aktuell` bewegt sich im Betrieb (327: 0,793893 → 0,792117); 9 Zeugen, Gegenproben 2/2 und 1/1, Suite 2781). Davor 1. September 2026, 14:30 UTC (`date -u`; **34 Deckungsluecken der Aufzaehlungen geschlossen** — davon drei als Fehler der Pruefung selbst entlarvt (Funktionsparameter als State-Kanaele gelesen); 19 State-Kanaele, 4 GV-Prompt-Bloecke, 4 Knoten-Dateien der Rechenkette, 2 im Architekturbaum, 1 Verfasser-Block, 1 KZG-Feld. Gegenprobe 2/2. Kein Produktivcode geaendert, Suite 2772). Davor 1. September 2026, 14:05 UTC (`date -u`; **die erste Beruehrung** — vier Stueck, vorher ausgerechnet statt geraten (Vorhersage 2/1/2, gemessen 1/1/2); dabei `FALTUNG-OHNE-AUFRUFER` gefunden: `ausschlag_aktuell` bewegt sich trotzdem nicht. Kein Produktivcode geaendert, Suite 2772). Davor 1. September 2026, 13:50 UTC (`date -u`; die Synapsen-Promotion bekommt ihr Moduldokument — der Defekt stand im Dokument eines abgeloesten Agenten. Suite 2772). Davor 1. September 2026, 10:50 UTC (`date -u`; der Betriebsbeleg fuer Scheibe 2 — vier Faeden im Betrieb, das Tor trennt, die Auffrischung laeuft; zwei Defekte dabei behoben (`PROMOTION-NUR-EIN-PAAR`, die KZG-Beschraenkung). Suite 2772). Davor 31. August 2026, 22:45 UTC (`date -u`; der Nachtrag auf Nachfrage — zwei Lessons, ein Bug-Eintrag, der Plutchik-Befund klassifiziert, vier Konstanten im Kalibrierungs-Register. Suite 2763). Davor 31. August 2026, 22:25 UTC (`date -u`; die Praegungsschicht bekommt ihre Verstaerkung — scharfes Embedding, Zuordnung ueber Naehe 0,62, Faltung gegen die Konzepttabelle. Suite 2763). Davor 31. August 2026, 21:35 UTC (`date -u`; drei Schwellen mit der Reizstaerke mitgezogen — Delegation 0,20, Injektion 0,25, Praegungs-Salienz 0,60. Suite 2748). Davor 31. August 2026, 20:24 UTC (`date -u`; die Reizstaerke — der Emotionsverlauf liest endlich die Erregung: Cap 4.0, Turn-Beitrag `Cap × arousal³`, Filterschwelle 0.04, alle drei aus Messreihen hergeleitet. Suite 2739). Davor 31. August 2026, 20:30 UTC (`date -u`; die Praegungsschicht bekommt ihre erste Scheibe — Faeden entstehen, die Verstaerkung fehlt. Suite 2732). Davor 30. August 2026, 22:38 UTC (`date -u`; die Gravitationsschwelle lehnt wieder ab — zwei Bugs behoben, Suite 2706). Davor 30. August 2026, 17:25 UTC (`date -u`; die Faszination als eigene Zeile; zwei Register-Eintraege zur Ziele-Tabelle). Davor 30. August 2026, 13:01 UTC (die Haltungsschicht — der Speicher steht, Erzeuger und Leser fehlen). Davor 30. August 2026, 11:46 UTC (Scheibe 10 — das Gewicht einer Luecke). Davor 30. August 2026, 10:45 UTC (Scheibe 8 — der ausstehende Betriebsturn ist gelaufen). Davor 30. August 2026, 10:20 UTC (die Prioritaetsmarke ⏫ eingefuehrt und auf den laufenden Strang *Denken, Rahmen, Wille, Antrieb* gesetzt; Ziele frisch gezaehlt). Davor 30. August 2026, 09:20 UTC (der Client hat einen Testlauf — Zuordnungspruefung und Toolbar-Verdrahtung bezeugt). Davor 30. August 2026, 08:59 UTC (Web-Infrastruktur: Serper als erster Suchanbieter, SearXNG als Rueckfall). Davor 30. August 2026, 07:40 UTC (Verfasser- und Reducer-Zeile: die Wissensbloecke sprechen ueber Person A, Kanal `memory_context_verfasser`). Davor 29. August 2026, 23:20 UTC (Thinker-Zeile: die eine Suche auf Deutsch — Fuehrung gesetzt, Labor 0/8 gegen 0/7 englisch ohne messbaren Unterschied). Davor 22:58 UTC (Reducer-Zeile: der Sprecher im `[GEDAECHTNIS]`-Block und im GV-Kontext; Thinker-Zeilen: Suchdisziplin — eine Suche je Turn, Sachlage-Treffer zuerst, Betrieb 1 / 1 / 0 Maschinenaufrufe, zweiter Versuch am Budget abgewiesen).
**Verlauf:** [Verlauf des Standes](#verlauf-des-standes) — ~~171~~ → ~~172~~ → ~~174~~ → ~~175~~ → ~~176~~ → ~~177~~ → ~~178~~ → ~~179~~ → ~~180~~ → ~~181~~ → ~~182~~ → ~~183~~ → ~~184~~ → ~~185~~ → ~~186~~ → ~~189~~ → ~~190~~ → ~~191~~ → ~~192~~ → ~~193~~ → ~~194~~ → ~~195~~ → ~~196~~ → ~~197~~ → ~~198~~ → ~~199~~ → ~~200~~ → ~~201~~ → ~~202~~ → ~~203~~ → 204 Eintraege, juengster zuerst (`[nachgezaehlt 08.11.2026, 14:58 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 14:58 UTC; davor 203 `[nachgezaehlt 08.11.2026, 14:54 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 14:54 UTC; davor 202 `[nachgezaehlt 08.11.2026, 14:45 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 14:45 UTC; davor 201 `[nachgezaehlt 08.11.2026, 14:34 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 14:34 UTC; davor 200 `[nachgezaehlt 08.11.2026, 14:17 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 14:17 UTC; davor 199 `[nachgezaehlt 08.11.2026, 14:15 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 14:15 UTC; davor 198 `[nachgezaehlt 08.11.2026, 14:10 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 14:10 UTC; davor 197 `[nachgezaehlt 06.11.2026, 20:43 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 20:43 UTC; davor 196 `[nachgezaehlt 06.11.2026, 20:12 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 20:12 UTC; davor 195 `[nachgezaehlt 26.10.2026, 19:50 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 19:50 UTC; davor 194 `[nachgezaehlt 26.10.2026, 19:03 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 19:03 UTC; davor 193 `[nachgezaehlt 26.10.2026, 18:41 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 18:41 UTC; davor 192 `[nachgezaehlt 26.10.2026, 08:25 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 08:25 UTC; davor 191 `[nachgezaehlt 26.10.2026, 08:17 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 08:17 UTC; davor 190 `[nachgezaehlt 26.10.2026, 07:51 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 07:51 UTC; davor 189 `[nachgezaehlt 25.10.2026, 22:06 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 22:06 UTC; die Angabe **186** vom 23.10.2026, 20:11 UTC stand nach den Eintraegen vom 23.10.2026, 21:18 und 22:31 UTC bei 188 gezaehlten, ohne dass die Zahl fortgeschrieben wurde; davor 186 `[nachgezaehlt 23.10.2026, 20:11 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Eintrag von 20:11 UTC; davor 185 `[nachgezaehlt 22.10.2026, 23:12 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, nach dem Zusammenfuehren der Eintraege von 22:45 und 23:00 UTC; davor 184 `[nachgezaehlt 22.10.2026, 23:00 UTC]` und 184 `[nachgezaehlt 22.10.2026, 22:45 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt, je ohne den anderen der beiden Eintraege; davor 183 `[nachgezaehlt 22.10.2026, 20:29 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt; davor 182 `[nachgezaehlt 22.10.2026, 06:12 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt; davor 181 `[nachgezaehlt 22.10.2026, 06:06 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt; davor 180 `[nachgezaehlt 22.10.2026, 05:27 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt; davor 179 `[nachgezaehlt 18.10.2026, 14:59 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt; davor 177 `[nachgezaehlt 18.10.2026, 11:16 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt; davor 176 `[nachgezaehlt 18.10.2026, 01:01 UTC]` als Aufzaehlungspunkte der Form `- **<Ziffer>` im Abschnitt; davor 175 `[nachgezaehlt 17.10.2026, 23:45 UTC]`; davor 174 `[nachgezaehlt 17.10.2026, 21:50 UTC]`; die Angabe **172** vom 17.10.2026, 20:29 UTC stand nach dem Eintrag von 21:19 UTC bei 173 gezaehlten, ohne dass die Zahl fortgeschrieben wurde; davor 172 `[nachgezaehlt 17.10.2026, 20:29 UTC]`; davor 171 `[nachgezaehlt 17.10.2026, 17:05 UTC]`; davor 170 `[nachgezaehlt 17.10.2026, 15:49 UTC]`; davor 169 `[nachgezaehlt 17.10.2026, 14:36 UTC]`; davor 168 `[nachgezaehlt 17.10.2026, 13:13 UTC]`; davor 167 `[nachgezaehlt 16.10.2026, 20:12 UTC]`; davor 166 `[nachgezaehlt 16.10.2026, 16:02 UTC]`; davor 165 `[nachgezaehlt 16.10.2026, 00:59 UTC]`; davor 164 `[nachgezaehlt 15.10.2026, 21:32 UTC]`; die Angabe **162** vom 15.10.2026, 01:32 UTC stand nach dem Eintrag von 16:52 UTC bei 163 gezaehlten, ohne dass die Zahl fortgeschrieben wurde; die Angabe **158** vom 19.09.2026, 23:49 UTC stand vor den Eintraegen vom 15.10.2026 bei 160 gezaehlten, ohne dass die Zahl fortgeschrieben wurde; die Angabe **150** davor stand bei 156 gezaehlten — sechs Eintraege sind seit dem 18.09.2026, 21:04 UTC hinzugekommen, ohne dass die Zahl fortgeschrieben wurde; die Angabe **130** stand bei 133 gezaehlten, die Angabe **110** vom 11.09.2026 war ebenfalls nicht fortgeschrieben)
**Pfad:** novaberg/docs/novaberg-featureliste.md
**Typ:** Register
**Quellen:** die 45 Konzepte (je in bis zu fünf Teilen, `_k` gezählt am 19.09.2026), `novaberg-architecture.md`, die Moduldokumente, `novaberg-roadmap.md`, `novaberg-backlog.md`, `novaberg-bugs-index.md` (seit 19.09.2026 das Findemittel über die geteilten Bugregister, offen und abgeschlossen), `novaberg-fundliste.md` — gehalten gegen Code und Produktivsystem
---
## Wie diese Liste zu lesen ist
| Ampel | Bedeutung | Woran sie gebunden ist |
|---|---|---|
| ⚫ | **nicht begonnen** | Die Zeile existiert, Code zu ihr nicht |
| 🟠 | **begonnen** | Code existiert und ist benennbar — das Ziel ist noch nicht belegt |
| 🟢 | **fertig** | `ZIEL` erreicht, `TEST` grün, `MESSUNG` gelaufen — **alle drei**, nicht zwei davon |
| 🔴 | **fehlerhaft** | Eine offene Kennung im Defektregister zeigt darauf · **oder** es ist gebaut und gemessen ohne Wirkung · **oder** es erzeugt etwas, das niemand liest |
> **Rot ist nicht ein dunkleres Orange.** Orange heißt *unfertig, und niemand hat sich geirrt*. Rot heißt *fertig geglaubt und im Betrieb falsch*. Wer beides in eine Farbe legt, verliert genau die Menge, die Vertrauen kostet — und das ist die einzige Menge, die man vor der nächsten Messung kennen muss.
### ⏫ — der laufende Arbeitsstrang
**Eine Zeile mit ⏫ ist der Gegenstand der aktuellen Arbeit und hat Vorrang vor allem anderen in dieser Liste.** Die Marke steht **neben** der Ampel und ersetzt sie nicht: Die Ampel sagt, was gebaut ist, die Marke sagt, woran gebaut wird. Beide zusammen erlauben den Fall, der sonst nicht darstellbar wäre — **⚫ ⏫**, also *hier liegt noch kein Code, und genau hier geht es weiter*.
**Warum die Ampel dafür nicht taugt:** Sie ist an nachprüfbare Bedingungen gebunden (Tabelle oben). Wer ein Vorhaben auf 🟠 setzt, um seinen Rang zu zeigen, behauptet Bestand, den es nicht gibt — und macht damit genau die Zahl kaputt, für die diese Liste existiert.
**Gesetzt am 30.08.2026** auf den Strang *Denken, Rahmen, Wille, Antrieb* (§6).
**Jede Zeile trägt ihren Beleg**, und der Beleg trägt seine Herkunft:
- `[gemessen]` — eine Zahl aus dem Produktivsystem vom 17.08.2026
- `[Code]` — eine Stelle im Bestand, nachprüfbar mit einem Grep
- `[Doku]` — übernommen aus einem Konzept- oder Moduldokument, **nicht** gegen den Bestand gehalten
> **Eine Zeile mit `[Doku]` ist die schwächste Zeile dieser Liste.** Sie sagt, was jemand über den Zustand geschrieben hat, nicht was der Zustand ist. Drei solcher Zeilen sind bei dieser Erhebung als falsch aufgefallen (§14).
### Die Pflege läuft auf zwei Takten
**Fortführung — bei jeder Arbeit.** Wer ein Konzept schreibt, legt seine Featurezeilen an. Wer an einem Feature zu bauen beginnt, setzt die Ampel auf 🟠. Wer es abschließt, setzt sie auf 🟢. Wer einen Defekt mit Kennung dagegen aufnimmt, setzt sie auf 🔴.
**Neuerhebung — in Abständen.** Die Liste wird gegen den Bestand **neu gemessen**, nicht gegen ihre eigene letzte Fassung. Das ist ein eigener Auftrag und nicht Teil der Fortführung.
> **Beides widerspricht sich nicht, weil die Fortführung den Beleg mitbringt.** Wer eine Ampel setzt, hat ihn in der Hand — den Commit, die Bilanzzeile der Suite, den Messlauf. Eine fortgeführte Zeile ist deshalb **nicht** die schwache Sorte. Schwach werden die Zeilen, die niemand anfasst: Sie behalten ihre Ampel, während sich der Code darunter bewegt, und **genau die prüft die Neuerhebung**.
>
> **Der Anteil der `[Doku]`-Belege ist der Verfallsanzeiger dieser Liste.** Er wächst zwischen zwei Erhebungen und sagt, wann die nächste fällig ist — er ist die einzige Zahl hier, die man nicht bauen muss, um sie zu haben.
**Eine Ampel ohne Beleg gilt nicht als gesetzt.** Wer die Ampel ändert, ersetzt den Beleg mit; sonst steht am Ende eine Farbe, die niemand nachrechnen kann.
Die Feature-Matrix in `novaberg-architecture.md` §6 ist mit dieser Liste abgelöst — sie führte die Synapsen-Tabellen als „Schema angelegt, leer", während 2.390 Knoten und 365.088 Kanten darin stehen.
---
## 1. Die Graphen und die Pipeline
### 1.1 Die Graphen
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **HumanGraph** (Pfad 1 — der Mensch spricht) | 🟢 | `graph/human_graph.py`, 5 Knoten `[Code]` | — |
| **CharacterGraph** (Pfad 2 — die Figur antwortet) | 🟢 | `graph/character_graph.py`, 17 Knoten `[Code]` | — |
| **AgentGraph** (Pfad 3 — Hintergrundarbeit) | 🟢 | `graph/agent_graph.py` `[Code]` · `tests/test_reiz_platz.py::DerAgentGraphBekommtDieHerkunftTest` · **im Betrieb 24.08.2026** `[gemessen]`: **15 Aufrufe** in zwei Tagen, 15 begonnen und 15 abgeschlossen; die Marke wirkt nachweislich, weil das Herkunftstor der Gravitation sie liest und **15 von 15** feuerte | **🟢 seit 23.08.2026** (zuvor 🔴): `AGENTGRAPH-REIZPLATZ-FALSCH` behoben. **Die Marke steht in keiner seiner eigenen Zeilen** — 120 `pipeline_log`-Zeilen ueber die 15 Turns, **0 mit `herkunft`/`initiator`**; rekonstruierbar nur ueber `turn_id` aus der `turn_roh`-Zeile des CharacterGraph, und **28 von 209** AgentGraph-Turns haben nie eine bekommen (alle vor dem 16.08.2026) — Fundliste 24.08.2026 |
| **PixieGraph** (eigener Graph für Pixie statt AgentGraph) | ⚫ | `create_pixie_state` existiert nicht `[Code]` · `novaberg-pixie-graph-merge_k.md` Phase 0–3 | alles |
| **Kanalzwang im StateGraph** (jedes Feld deklariert) | 🟢 | 74 Zustandsfelder, **0 ohne Vorkommen außerhalb `state.py`** `[gemessen]` | — |
| **Event-Modell** (Consumer statt async-Block) | 🟢 | **08.11.2026: das Warten eines Ereignisses auf `graph_run_lock` hält die Event-Schleife nicht mehr an** — nicht blockierende Versuche je 0,05 s bis zur Frist von 60 s, Ausgang nach der Frist wie bisher; Code-Tree `10166cb`, Kennung wird nachgetragen; 17 Zeugen `tests/test_event_lock_wait.py`, Server-Suite am Tree `9365847` `Ran 5639 tests` · `OK (expected failures=2)` `[Code]` · vor dem Commit über den echten `main.lifespan` gemessen: größte Lücke im Warten 0,022–0,041 s gegen 3,0 s und 60,0 s mit verworfenem Ereignis an den Eltern `[gemessen 07.11.2026]`; im Betrieb nicht gemessen; `EVENT-LOCK-HAELT-SCHLEIFE` angelegt und geschlossen (Archiv, [`novaberg-bugs-archiv-bauart.md`](novaberg-bugs-archiv-bauart.md)); bleibt 🟢 · `services/event_consumer.py`, `services/events.py` `[Code]` | offen als Funde: der Spalt zwischen Erwerb und `try`, der stille Ausgang nach der Frist (Fundliste) |
| **Prompt-Eingangsqueue** vor Pfad 1 | 🟢 | `services/prompt_eingang.py`, `prompt_consumer.py` `[Code]` | — |
| **TurnOrchestrator** (Vision Chat 58) | ⚫ | kein Modul `[Code]` | alles |
### 1.2 Die zwanzig Knoten
| Knoten | Ampel | Beleg | Rest |
|---|---|---|---|
| `perzeption` — Emotion, Arousal, Intent, Dual-Modus | 🔴 | `[Code]` · `novaberg-node-perception.md` · **26.10.2026:** Ein Wert außerhalb des Kanons, den die Perzeption durchlässt, wird an der Verwendungsstelle abgefangen — die acht Faktortabellen der Kanon-Felder geben ihm einen neutralen Faktor unter ihrem Maximum mit Fehlerzeile, die Schreiber des KZG leeren einen fremden `modus` und verwerfen eine fremde Intention (Code-Tree `6feb70a`, Kennung wird nachgetragen → committet als `e71df6b`, die Doku dazu als `7b35557`; Server-Suite `Ran 5566 tests` · `OK (expected failures=2)`) `[Code]`; vor dem Commit an gespeicherten Modellausgaben gemessen `[gemessen 26.10.2026]`; im Betrieb nicht gemessen | schreibt **keinen** Pipeline-Eintrag · **🔴 seit 20.08.2026** (zuvor 🟢): ~~`PERZEPTIONSFELDER-OHNE-KANON` offen~~ → geschlossen am 26.10.2026 (Archiv) · **🔴 bleibt:** `PERZEPTION-WERTE-VERRUTSCHEN-DIE-SPALTE` ist offen und zeigt darauf — ein richtiger Wert in der falschen Spalte, die Herkunft der meisten Fremdwerte |
| `db_zugriff` — CG-Eingang, Personality-Klassen | 🟢 | `[Code]` · Pipeline-Einträge vorhanden `[gemessen]` | — |
| `enricher` — Kontext aus vier Quellen | 🔴 | `[Code]` | Fakten-Enrichment **abgeschaltet** seit Chat 71 (`enricher.py:847`) · **🔴 seit 20.08.2026** (zuvor 🟠): `ENRICHERPROMPT-LEERE-HUELLE` offen |
| **Query Rewriting** (der Suchschluessel traegt den Gegenstand) | 🟢 | `graph/nodes/enricher.py::_suchtext_bauen`, **10 Zeugen**, Gegenprobe 10 rot bei 7 vorhergesagt · gemessen vor dem Bau gegen 306 Ausarbeitungen: rohe Aeusserung **0/10** ueber der Abrufschwelle, Rewrite auf Frageform **5/10** (Median-Kosinus 0,1865 → 0,4173); Themenwechsel 3/3 unter der Schwelle, fremde Verlaeufe 15/15 ohne Treffer · im Betrieb an einem echten Turn belegt `[gemessen]` | **Am 21.08.2026 fuer alle fuenf Leser gemessen** `[gemessen]`: 39 Sonden aus dem Bestand der Konsumenten selbst, durch ihren echten Lesepfad — rohe Aeusserung **0/39**, Rewrite **37/39**, und das Rewrite deckt sich mit der handaufgeloesten Referenz in **39/39**. NMCP `wissen` teilt den Lesepfad der Bibliothek und ist damit mitgedeckt |
| `ei_calc` — Verlauf, Vektor, Empathie | 🟢 | `[Code]` · `novaberg-node-ei-calc.md` | kein Pipeline-Eintrag |
| `emotionale_gravitation` — reaktivierte Erinnerung | 🟢 | `[Code]` · `novaberg-node-emotionale-gravitation.md` | kein Pipeline-Eintrag; `GRAVITATION-KLEMME-FEHLT` offen |
| `ei_calc_persist` — CG-Ausgang, Zustand schreiben | 🟢 | `[Code]` | — |
| `reducer` — Gegenspieler zum Enricher | 🟠 | Knoten verdrahtet in `character_graph.py:63` `[Code]` · **der `[GEDAECHTNIS]`-Block nennt seit 29.08.2026 den Sprecher** jeder KZG-Zeile und jeder Resonanz-Erinnerung (`memory_context.py::speaker_label`, Lesepfad lädt `beobachter`, auch im GV-Resonanzkontext; 8 + 2 Zeugen `tests/test_memory_context_speaker.py`, `test_gv_resonanz_kontext.py`, Gegenprobe 2/2/1/1 + 2, Suite 2618; Betrieb 22:50 UTC: 30 KZG-Zeilen 18 Nutzer / 12 Nova, 9 Resonanzzeilen 6 / 3, 0 unbekannt) | `REDUCER_AKTIV` und `REDUCER_LOG_REMOVED` haben **keinen Leser** `[gemessen]`; strukturierter `memory_context` (Reducer-Umbau) offen; die Anrede des Blocks (*»dir«*) steht gegen die Regel »das Modell ist nie der Charakter« (Fundliste, Entscheidung offen) |
| `router` — Routing und Delegation | 🔴 | `[Code]` · `novaberg-node-router.md` | ~~kein Pipeline-Eintrag~~ → seit 18.09.2026 `router.rueckfrage` und `router.zustellung` · `ROUTER-MISS-OHNE-ABSCHLUSS`, `ROUTE3` offen · **🔴 seit 20.08.2026** (zuvor 🟠) — der Grund ist zur Hälfte fort: `ROUTERPROMPT-ZWEIFEL-WIDERSPRUCH` **behoben** **geprueft 20.08.2026** (der zweite Satz über den Zweifel kommt im Serverbaum nicht mehr vor), die beiden anderen offen |
| `planner` — Agentenschleife, Resume | 🟠 | `[Code]` · `novaberg-node-planner.md` | ~~kein Pipeline-Eintrag~~ → seit 18.09.2026 `planner.resume` und `planner.dienstwahl` · `PLANNER-AKTIV-RELIKT` · ~~**🔴 seit 20.08.2026** (zuvor 🟠): `RESUME-VERBRAUCHT-IMPULS` offen~~ → **🔴 → 🟠 am 05.10.2026:** `RESUME-VERBRAUCHT-IMPULS` ist behoben (Riegel im Router seit `ca0ee90`, Archiv); kein offener Defekt zeigt mehr auf die Zeile, gemessen ist sie nicht |
| `agent_dispatch` — zentraler Eintritt | 🟢 | `[Code]` · Pipeline-Einträge `[gemessen]` | `DISPATCH-ABSCHLUSS-UNVOLLSTAENDIG` offen |
| `gespraechsvektor` — Landschaft, Strategie, Lücken | 🟢 | `[Code]` · `novaberg-node-gv_k.md` | siehe §5 |
| `haltung` — fünf Verhaltensgrößen | 🟠 | Knoten rechnet, protokolliert, persistiert `[Code]` | Wirkung siehe §5 · ~~**🔴 seit 20.08.2026** (zuvor 🟢): `UEBERSTEUERUNG-GREIFT-NICHT` offen~~ → **🔴 → 🟠 am 05.10.2026:** `UEBERSTEUERUNG-GREIFT-NICHT` war seit `5484ef6` (12.08.2026) behoben (Archiv); 🟢 erst mit einer Messung danach. Offen und mit Absichtsfrage: `ZUG-ZWISCHEN-090-097-ABGESCHALTET` · `UEBERSTEUERUNG-AB-FUER-DREIERSKALA` **behoben** **geprueft 20.08.2026** — die Schwelle steht auf 0.9 statt 1.0 und ein Zeuge hält die Eichung |
| `verfasser` — der Inhalt vor der Form | ~~🟠~~ → 🔴 (06.11.2026) | **06.11.2026, offen:** `EINWAND-KOPFBLOCK-LIEST-KEINE-WAHL` (niedrig) — der Kopfblock liest eine Nicht-Wahl als Wahl, still und nur in der Spur `[Code]` · `[Code]` · `novaberg-node-verfasser_k.md` **✅ gebaut** · **30.08.2026:** `[GEDAECHTNIS]`, `[AUFZEICHNUNGEN]`, `[EIGENE FUNDE]` sprechen über Person A, nie mit ihr — Gedächtnisblock in den Namen des Lesers, Kanal `memory_context_verfasser` (13 Zeugen `tests/test_verfasser_reader_names.py`, Suite 2633, Betrieb *»Du fühlst«* 0 ×; Labor zwei Arme ohne messbaren Unterschied in der Perspektive, 0/5 gegen 0/5 Leckagen) · **15.10.2026:** eigener Block `[TERMINE]` hinter `[AUFZEICHNUNGEN]` mit den Terminen des Turns und dem Satz, Termine nur aus diesem Block zu nennen (`prompts/default/verfasser.termine.txt`); die `[Timeline/…]`-Zeilen fehlen im `[GEDAECHTNIS]` (`memory_context.py::entries_for_reader`); im Betrieb nicht gemessen · **26.10.2026:** der Kopfblock des Urteils wird über das erste Wort je Feld gelesen, ein Feld mit mehr als einem Wert seiner Menge ist der Ausfall `mehrdeutig`, jeder Ausfall trägt einen Grund aus `AUSFALLGRUENDE`, und die Ausfallzeile nennt ihn (Code-Tree `3806695`, Kennung wird nachgetragen → committet als `a6e46c2`, die Doku dazu als `b87cc49`; Server-Suite `Ran 5563 tests` · `OK (expected failures=2)`) `[Code]`; vor dem Commit an den 22 protokollierten Ausfällen seit dem 21.10.2026 gemessen — der Code davor liest 0, der Bau 21 `[gemessen 26.10.2026]`; im Betrieb nicht gemessen | läuft **nicht** auf dem Aufgabenpfad — dort erreicht auch `[TERMINE]` die Antwort nicht · ~~**🔴 seit 20.08.2026** (zuvor 🟢): `VERFASSER-KOPFBLOCK-FAELLT-AUS`, `VERFASSER-ORDNET-IMPULS-PERSON-B-ZU`, `FRAGEN-ZEILE-OHNE-BEDINGUNG` offen~~ → **🔴 → 🟠 am 26.10.2026:** `VERFASSER-ORDNET-IMPULS-PERSON-B-ZU` und `FRAGEN-ZEILE-OHNE-BEDINGUNG` sind seit dem 22.08.2026 geschlossen, `VERFASSER-KOPFBLOCK-FAELLT-AUS` seit dem 26.10.2026 (`novaberg-bugs-archiv-antwortpfad.md`); keine offene Kennung zeigt mehr auf die Zeile, die Rate der Ausfallzeilen im Betrieb ist nicht gemessen · **🟠 → 🔴 am 06.11.2026:** die neue Kennung zeigt auf die Zeile |
| `responder` — die Antwort | 🔴 | `[Code]` · `novaberg-node-responder.md` | kein Pipeline-Eintrag · `RESPONDER-LEERE-ANTWORT-STILL` Ursache offen · **`UNFERTIGE-ANTWORT-GILT-ALS-FERTIG` offen seit 25.08.2026** · `AUSLIEFERUNG-HINTER-DEM-NACHLAUF` **behoben am 25.08.2026** — die Antwort geht jetzt bei der Freigabe raus statt am Ende, ueberlebt einen Abbruch danach, und ein gescheiterter Turn meldet sich. **Die drei dabei gebauten Log-Zeilen sind am selben Abend im Betrieb geprueft** `[gemessen 25.08.2026]`: 11 von 11 Turns tragen alle drei, lueckenlos — und **zwei davon meldeten elfmal denselben Wert**. `BELEGUNG-ZAEHLT-DAS-TRAEGEROBJEKT` daraus behoben: `8 von 8` stimmte nicht, weil vier von acht Eintraegen `bool(zustand_internal)` prueften statt den Feldwert; die Belegung wird jetzt an der fertigen Nutzlast gemessen (`tests/test_nutzlast_belegung.py`, 5 Zeugen, Gegenproben 2 und 4 rot). **Den Zuschnitt entschied eine Messung am Client:** sieben der acht Zustandsfelder liest er gar nicht `[gemessen]` — eine fertige, vom Tribunal angenommene Antwort ging an einem `TypeError` im Nachlauf verloren; der Ausloeser (`TOKENZAEHLUNG-REISST-DEN-GRAPHEN`) ist behoben, **die Reihenfolge nicht**: Die Auslieferung steht hinter Salienz und KZG, also kostet dort jede Ausnahme die Antwort `[gemessen]` · **🔴 seit 20.08.2026** (zuvor 🟢): ~~`RESPONDER-ERFINDET-DATUM`~~ **behoben am 22.08.2026** (Ausgabe-Verifikation in beiden Formen, am Bestand belegt: 1 Anschlag auf den Originalfall, 4 richtige still) und `FALSCHE-BESTAETIGUNG-WIRD-ERINNERUNG` offen — letzterer **zur Haelfte gebaut am 22.08.2026**: Die Verdichtung sieht den Ausgang des Turns (`[TATSAECHLICHER AUSGANG]`, 11 Zeugen, im Betrieb belegt); offen bleibt, dass die **Antwort selbst** keine abgelehnte Handlung bestaetigt — ~~das haengt weiter an einer Anweisung im Prompt~~ → **seit 15.09.2026 gerechnet in der Auswertung des Tribunals** (Scheibe 12 A; Korrekturrunde im Labor 20 von 24 sauber, im Betrieb ungemessen) · **vier von sechs sind behoben** **geprueft 20.08.2026**: `NUTZERKERN-ERREICHT-RESPONDER-NICHT`, `BEZIEHUNGSPROFILE-UNBESCHRIFTET`, `RESPONDER-ANWEISUNG-DOPPELT`, `FARBTON-ERREICHT-RESPONDER-NICHT` |
| `thinker` — Faktenprüfung, Websuche | 🟠 | `[Code]` · `novaberg-node-thinker.md` · **Suchdisziplin seit 29.08.2026:** eine Suche je Turn, die Sachlage-Treffer bedienen die erste (`prior_research`, `ThinkerToolCache.web_search_*`; 22 Zeugen `tests/test_thinker_search_budget.py`, Gegenprobe 4/1/1, Suite 2608; Betrieb 22:38–22:44 UTC, drei Turns: 1 / 1 / **0** Maschinenaufrufe statt bis zu 3 — der dritte aus der Sachlage-Recherche bedient; **23:20 UTC:** die eine Suche auf Deutsch — Regelzeile und Pflichtblock, 3 Zeugen, Labor zwei Arme 0/8 gegen 0/7 englisch, Wirkung unbelegt) | kein Pipeline-Eintrag — der Thinker ist **nicht beobachtbar** (`B−1` der Sykophanz-Reihe) |
| `thinker_cache` | 🟢 | `[Code]` | kein Pipeline-Eintrag |
| `tribunal` — drei Perspektiven | 🔴 | **06.11.2026, offen:** `MODELLFELD-UNGEPRUEFT-GELESEN` (mittel) — `reasoning: null` reißt `evaluate` `[Code]`; bleibt 🔴 · `[Code]` · `novaberg-node-tribunal.md` · **seit 15.09.2026 eine dritte gerechnete Prüfung in der Auswertung, die Speicherbehauptung** `[gemessen 15.09.2026]` (Scheibe 12 A) · **seit 15.10.2026 vor der Korrektur der Bestandsabgleich gegen die Timeline**, Ausgang im selben Eintrag (`bestandsabgleich`) `[Code]` · **seit 16.10.2026 deckt ein gefundener Termin nur die Behauptung, deren Satz ihn nennt**, sonst Ausgang `gefunden_nicht_genannt` und Korrektur `[Code]`, 18 Zeugen · **am Abend geschärft** (noch nicht committet): ein Tag nennt nur mit Uhrzeit oder Titelwort, die Art des Eintrags unterscheidet nicht, die Gegenrichtung erst ab 7 Buchstaben `[Code]`, 35 Zeugen | ~~kein Pipeline-Eintrag~~ → seit 15.09.2026 schreibt die Auswertung je Durchlauf einen (Quelle `speicherbehauptung`), im Betrieb belegt · `TRIB-PERSON-DRIFT` offen · **🔴 seit 20.08.2026** (zuvor 🟢): `TRIBUNAL-ERKENNT-ABBRUCH-OHNE-FOLGE` offen · **17.10.2026:** ein Lesevorgang deckt keine Schreibbehauptung mehr, nur ein Dienst mit verifizierter Schreibung (*Ein Lesevorgang deckt nicht*) `[Code]`, 14 Zeugen, noch nicht committet |
| `corrector` — Korrekturschleife | 🟢 | `[Code]` · `novaberg-node-corrector.md` | kein Pipeline-Eintrag |
| `salience` — Salienz als Entscheider | 🔴 | `[Code]`, läuft — aber **gesättigt**: 87 % der `user`- und 99 % der `assistant`-Einträge über 0,90 `[Doku, Fundliste 17.08.]`. **Eine Ursache ist am 09.09.2026 entfernt:** der HumanGraph-Boost addierte einen unbeschraenkten Term und setzte **308 von 498** Zeilen auf exakt 1,0; er fuellt seither auf (`fill_gap_upward`), gerechnet **5 statt 307** exakte Einsen | rangiert nichts mehr; `KZG-SALIENZ-SKALENBRUCH`, `SALIENZ-JSON-BRICHT-AN-LATEX` offen. **Die Ampel bleibt 🔴**, weil die Saettigung am Bestand nicht nachgemessen ist — die Rechnung sagt, was kuenftige Zeilen tragen, nicht was die alten tragen |
| `dispatcher` — Schreiboperationen verteilen | 🟢 | `[Code]` · `novaberg-node-dispatcher.md` | — |
### 1.3 Querschnitt Pipeline
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **Prompt-Schema `[BLOCKNAME]`** auf allen Knoten | 🟢 | `novaberg-pattern-prompt-schema.md` `[Doku]` · `[Code]` — **7 Dateien** unter `prompts/` und `graph/` tragen Blockmarken der Form `[GESPRAECHSVEKTOR]`, `[AUFZEICHNUNGEN]`, `[MASS]`; am Bestand gezaehlt 20.08.2026 `[Erhebung 20.08.2026]` | — |
| **Entscheidungs-Eintrag je Knoten** (jede Weiche dauerhaft belegt) | 🟠 | **🔴 → 🟠 am 18.09.2026: eine Form für alle Knoten** — `memory/pipeline_log.log_decision`, `switch` mit `entscheidung`, `ausgang`, `eingang`, `massstab` (`ee7f606`, 27 Zeugen in `tests/test_decision_entries.py`). **Im Betrieb, Turn `729033c8…` am 18.09.2026** `[gemessen]`: **5 Knoten** schreiben einen Eintrag mit `entscheidung` (perzeption, responder, thinker, router, verfasser), **8** irgendeinen `switch` (dazu db_zugriff, enricher, salienz im alten Format), **27** schreiben überhaupt. Beleg: `labor/2026-09-18_entscheidung_audit/ergebnis.md`. ~~9 von 20 Knoten~~ — die Zählung nach Knotenliste ist abgelöst durch die Zählung am Turn | `planner` gebaut, im Betrieb nicht belegt (der Turn erreichte ihn nicht, der Router stellte nicht zu) · die übrigen Knoten ohne `entscheidung`, darunter die drei im alten `switch`-Format |
| **Pipeline-Log** (Forensik, Spans, JSONB) | 🔴 | **154.383 Zeilen über 22.545 Turns** `[gemessen 04.09.2026, laufende DB]` — 10 der 13 Eintragsarten belegt, ≈ 3.959 Zeilen je Tag, Bestand ab 27.07.2026 (`id = 1`). Schema und laufende Tabelle stimmen überein; `novaberg-memory-synapsen_k.md` §10 am 04.09. nachgezogen | `log_prompt`, `log_bemerkung`, `log_token` haben **keinen Aufrufer** `[gemessen]` — am Bestand bestätigt: **nie eine Zeile**, nicht bloß selten · **🔴 seit 20.08.2026** (zuvor 🟢): `TURNROH-ZEILE-FEHLT` offen. `HALTUNGSSTAND-OHNE-LOGZEILE` ist am 23.08.2026 **als entschieden geschlossen** — die fehlende Zeile ist gewollt und im Docstring begruendet; die Haeufigkeit fehlgeschlagener Standschreibungen bleibt damit nur aus dem Dateilog zaehlbar |
| **Rückfrage-Kette** (Redis-Pending, Resume) | 🔴 | **08.11.2026: ein Nein am Tor endet als `dismissed`** — Direktiven und die Frage der Notizen nach einer nicht gefundenen Notiz; Code-Tree `33a7b83`, Kennung wird nachgetragen; 21 Zeugen `tests/test_gate_refusal.py`, Server-Suite am Tree `d5163ed` `Ran 5630 tests` · `OK (expected failures=2)` `[Code]` · vor dem Commit an einer Wegwerf-Datenbank gemessen: 3 von 3 *„nein“* als `dismissed` samt Text im `pipeline_log`, keine Fachtabelle geändert, kein Wartezustand danach `[gemessen 08.11.2026]`; im Betrieb nicht gemessen; `TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` geschlossen (Archiv, [`novaberg-bugs-archiv-charakter.md`](novaberg-bugs-archiv-charakter.md)); **bleibt 🔴** mit `NOTIZ-VERNEINUNG-UEBERLESEN` und `PENDING-RELEVANZ` · **26.10.2026, im Betrieb gemessen über den echten Weg** `[gemessen 26.10.2026]`, an einem Prüf-Nutzer, 9 von 9 Schritten wie Soll: *Direktiven* — die Bitte zum Löschen erreicht die Pflicht-Rückfrage mit der richtigen Kennung, *„Wie bitte?“* und *„ist das ok“* erneuern sie, *„Nein“* löscht nicht, *„ja“* löscht; *Notizen* — *„Wie bitte?“* legt nichts an und erneuert die Frage, *„Nein“* schließt. `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG` und `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` geschlossen (Archiv, [`novaberg-bugs-archiv-charakter.md`](novaberg-bugs-archiv-charakter.md)); Charakter-Identität und Dateien-Wurzeln im Betrieb nicht gemessen. **Bleibt 🔴:** ~~`TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN`~~ → geschlossen 08.11.2026, `NOTIZ-VERNEINUNG-UEBERLESEN` und `PENDING-RELEVANZ` offen · **24.10.2026, behoben im Code-Tree `f901e08`** `[Code]` (Kennung wird nachgetragen → committet als `e1e0724`, die Doku dazu als `d2d6ec8`), **offen bis zur MESSUNG im Betrieb:** jeder der vier Ja/Nein-Dienste (`direktiven`, `notizen`, `charakter_identitaet`, `dateien_wurzeln`) führt eine Antwort nur aus, wenn sie aus Zustimmung besteht — Wörter (Zustimmungs- und Füllwörter, *na*, *nun*, *also* nie), Zeichen (`DROPPED_SIGNS`) und Wortstellung (`ASKING_VERBS` vor `SUBJECT_WORDS`) geschlossen, die Ablehnung zuerst; `WAIT_STEMS` und `_holds_back` entfallen; Server-Suite `Ran 5394 tests` · `OK (expected failures=2)`; vor dem Commit an 305 ungezeigten Antworten 0 Fehlausführungen, Nachprobe der Wortstellung 14 von 14 unklar `[gemessen 24.10.2026]` · **25.10.2026, im Betrieb teils gemessen** `[gemessen 24.10.2026]`: Notizen über den echten Weg bestanden (*„Wie bitte?“* erneuert die Rückfrage, keine Notiz; *„Nein“* schließt); Tor der Direktiven mit gesetzter Rückfrage 4 von 4; der echte Weg zur Frage der Direktiven bricht an `DIREKTIVEN-KENNUNG-UNGEPRUEFT` ab; Charakter-Identität und Dateien-Wurzeln im Betrieb nicht gemessen; `ABLEHNUNG-OHNE-STAMM-BESTAETIGT` und `WURZELN-ABLEHNUNG-UNGELESEN` am 25.10.2026 geschlossen (Zeugen, Archiv) · ~~**24.10.2026, offen:**~~ (der Stand davor): `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG` (hoch) — an den vier Ja/Nein-Toren führt eine Antwort aus, die etwas zurückhält, sobald sie ein Zustimmungswort trägt: *„Wie bitte?“* legt eine Notiz an, gibt ein Verzeichnis zum Lesen frei und deaktiviert auf *„… loeschen (alle)“* alle Charakter-Anweisungen `[Code]`, an den Deutungsfunktionen nachgerechnet `[gemessen 24.10.2026]`; `TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` (mittel) — Direktiven und Notizen melden eine Ablehnung als `abgeschlossen` statt mit dem Kanon-Status `dismissed` `[Code]`; bleibt 🔴 · **Offen seit 20.10.2026** (Ja/Nein-Deutung, aus der Fundliste): ~~`ABLEHNUNG-OHNE-STAMM-BESTAETIGT`~~ → geschlossen 25.10.2026, `NOTIZ-VERNEINUNG-UEBERLESEN`, ~~`WURZELN-ABLEHNUNG-UNGELESEN`~~ → geschlossen 25.10.2026 · `[Code]` · `novaberg-graph.md` — ~~**`ZUSTIMMUNG-GILT-ALS-ABLEHNUNG` offen seit 18.08.**: Die Ja/Nein-Deutung vergleicht Teilzeichenketten, `gerne` gilt als Nein `[gemessen]`~~ → **behoben am 18.10.2026** (Tree `9153022`, im Archiv): In `charakter_identitaet` und `notizen` gewinnt die Ablehnung, gesucht als Stamm im Text ohne die Zustimmungswörter, die Zustimmung zählt ganze Wörter; 41 Antwortformen am Code vor und nach dem Bau gedeutet, *„ja, gerne“* bestätigt, *„nein, bitte nicht“* legt keine Notiz mehr an `[gemessen 18.10.2026]` (`labor/2026-10-18_zustimmung/deutung.py`) · **🔴 bleibt:** `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` offen seit 18.10.2026 — ~~die Direktiven deuten ihre Antwort gar nicht, auch ein Nein führt aus `[Code]`~~ → **24.10.2026, behoben im Code-Tree `2457549`** `[Code]` (Kennung wird nachgetragen → committet als `6846120`): Der Knoten `read_answer` deutet die Antwort, die Ablehnung zuerst, eine Antwort mit `?` oder einem Stamm des Wartens ist unklar, eine Auswahlfrage führt nie aus; 35 Zeugen, Suite `Ran 5244 tests` grün, Gegenproben wie vorhergesagt; im Betrieb nicht gemessen, offen bis dahin; dazu `PENDING-RELEVANZ` (der Router prüft nicht, ob eine Äußerung zur Rückfrage gehört) | `RESUME-VERBRAUCHT-DEN-IMPULS` ✅ behoben 14.08. · ~~die Deutung an Wortgrenzen, je Torwächter ein Zeuge~~ → je Torwächter ein Zeuge steht für `charakter_identitaet`, `notizen` und `dateien_wurzeln`; ~~offen ist die Deutung am Tor der Direktiven~~ → seit dem 24.10.2026 auch für `direktiven` (`tests/agents/direktiven/test_resume.py`), im Betrieb nicht gemessen |
---
## 2. Emotionale Wahrnehmung (EI)
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **Plutchik-Oktagon** (9 Vektoren, Normalisierung) | 🔴 | `ei/berechnung.py`, `novaberg-ei-plutchik.md` `[Code]` | `PERZEPTION-EMOTION-AUSSER-KANON` offen · **🔴 seit 20.08.2026** (zuvor 🟢): `EMOTIONS-VEKTOREN-DOPPELT` offen |
| **Reizstaerke des Emotionsverlaufs** | 🟢 | `ei/berechnung.py` (`_emotions_verlauf_berechnen`, `_glaettung`), `config.py` `[Code]` · `tests/test_emotions_reizstaerke.py` (7 Zeugen, rote Phase 6/7 gesehen, Gegenprobe 6/7) · **gemessen 31.08.2026** `[gemessen]`: Ausschlag folgt der Erregung — Nashorn 0,32 · Gammablitz 0,44 · Webb 0,58 · Todesfall 0,85 · Ekstase 0,95 · Anschlag 1,00; vorher **0,77 fuer alles**, Spannweite 0,0000 | Herleitung in `novaberg-ei.md` §Reizstaerke (sechs Schritte, mit dem verworfenen Entwurf). **Nachgezogen 31.08.2026:** drei Schwellen, die gegen die alte Wertelage gesetzt waren — Delegation 0,15→0,20 (4 von 33), Injektions-Faktor 0,6→0,25 (58 von 1178), Praegungs-Salienz 0,70→0,60 (21,1 % Durchlass); Zeugen in `tests/test_schwellen_nach_reizstaerke.py` |
| **EI-Plausibilitätsgate** (8 Sektoren) | 🔴 | `[Code]` · `novaberg-node-perception.md` · `tests/test_emotionsriegel_kanon.py` · **26.10.2026:** Die drei Faktortabellen des EI-Arousal (Dynamik, Intent, Ton) geben einem Wert außerhalb ihrer Tabelle den neutralen Faktor — ihren Eintrag `neutral`, sonst ihr Mittel — mit Fehlerzeile statt 1,0, das beim Intent ihr Maximum war (Code-Tree `6feb70a`, Kennung wird nachgetragen → committet als `e71df6b`, die Doku dazu als `7b35557`; `tests/test_kanon_usage.py`) `[Code]`; vor dem Commit an 1817 gespeicherten Turns gemessen: Der EI-Arousal sinkt in 262 und steigt in keinem `[gemessen 26.10.2026]`; im Betrieb nicht gemessen | **🟢 → 🔴 am 26.10.2026:** `PERZEPTION-EMOTION-AUSSER-KANON` ist offen und zeigt darauf — die Zeile nennt die Kennung seit dem 06.09.2026 in ihrem Rest, und die Ampel stand trotzdem auf 🟢; `PERZEPTIONSFELDER-OHNE-KANON`, das mit dem Vorgabewert am Maximum ebenfalls darauf zeigte, ist am selben Tag geschlossen (Archiv) · ~~**🟢 seit 23.08.2026**~~ **🟢 vom 23.08. bis zum 26.10.2026** (zuvor 🔴): `NEGATIVE-EMOTIONEN-DOPPELT` behoben — eine Quelle, acht Emotionen; der Zustellungs-Riegel haelt jetzt auch bei `wut`, `verzweiflung`, `enttaeuschung`. Im Bestand nie eingetreten (0 von 729 Turns), die Abhilfe ist vorbeugend · **06.09.2026: `mitgefuehl` hat einen Sektor** — Setzung des Eigentuemers auf `traurigkeit` (Sektor 5, Faktor 1,5); die Gegenkandidatin `zufriedenheit` haette eine positive Valenz behauptet. **Die Synonymkarte allein trug nicht** `[gemessen 06.09.2026]`: `sektor_faktor` gab weiter `(1.0, None)` samt Warnung, weil `EMOTION_SEKTOR_MAP` nur die 16 Kanonwerte fuehrt — dieselbe Luecke ein zweites Mal im Strang-Histogramm, wo ein Synonym in `unbekannt` fiel. Beide Naehte loesen jetzt auf; 3 Zeugen, Gegenprobe 2 rot, Suite 3159. `zuversicht` und der Riegel an der Perzeption bleiben offen (`PERZEPTION-EMOTION-AUSSER-KANON`) |
| **Arousal-basierter Decay** | 🟠 | `[Code]` · `novaberg-ei-plutchik_l.md` | zählt **Turns statt Zeit** — die Gegenbewegung über eine Pause ist Bauteil A der Eigenzeit (§8) |
| **EI-MIKRO** (situative Mikro-Anweisungen) | 🟢 | `responder.py:_ei_mikro_anweisung` `[Code]` | — |
| **Dual-Emotion Phase 1** (User-IDs entkoppelt) | 🟢 | `[Doku]` Chat 57 · `[Code]` — `memory/kzg.py`, Key-Schema `kzg:{user_id}:{character_id}:{entry_id}`; das Paar definiert das gemeinsame Gespraech `[Erhebung 20.08.2026]` | — |
| **Dual-Emotion Phase 2** (Nova-Empathie, Konflikt) | 🟠 | `[Code]`, AP1–7 und AP9 gebaut | AP8 Client-Teil `[Doku]` |
| **Dual-Emotion Phase 3** (Ziel-Vektor als dritte Kraft) | 🟠 | `ziele`: **259 Zeilen**, `ZielDecayAgent` läuft `[gemessen]` | ~~`ziel_motivation_anpassen` hat **keinen Aufrufer** `[gemessen]`~~ → **seit dem 15.10.2026 einen:** die Verstärkung eines mittelfristigen Ziels bei Begegnung (Zeile *Antrieb / Ziele*) `[Code]`; der Antrieb wirkt nicht auf die Emotion. **Seit dem 28.08.2026 ein dritter Zieltyp `kurzfristig`** (`memory/kurzziel.py`, Scheibe 2 des Lage-Konzepts; Halbwertszeit 3 h, der Decay-Agent fährt beide Typen — Zeugen `tests/test_kurzziel.py`, `tests/test_ziel_decay_stillgelegt.py`). **28.08.2026, abends: der Verfall wird beim Lesen gerechnet** — der Tageslauf (Takt 86400 s) hätte das kurzfristige Ziel ~25 h leben lassen `[gemessen]`; `ziele_aktive_laden` rechnet seither aus Anker und Alter für jeden Typ mit Halbwertszeit und liefert nichts unter `ZIEL_DEAKTIVIERUNGS_SCHWELLE` (`memory/ziele.py::ziele_live_bewerten`; Zeugen `DerVerfallBeimLesenTest`, `DerLaderLaesstVerfallenesLiegenTest`; Suite 2464 grün; Betrieb 19:52 UTC: 7 aktive Zeilen, 5 geliefert, Ziel 28576 live 0,545 bei 1,1 h). **29.08.2026: auch der Drive-Tab rechnet live** (`api/drive.py::_goals_live`, dieselbe Bewertung, Tageslauf-Wert daneben; 4 Zeugen, Betrieb 07:54: Endpoint = Lader) |
| **Praegungsschicht — Faeden** (Scheibe 1) | 🟠 | `memory/praegung.py`, `graph/nodes/praegung.py`, Tabellen `praegung_faden`/`praegung_beruehrung` `[Code]` · `tests/test_praegung_faden_schema.py` (21 Zeugen, Schematests vor dem Schema-Edit nach `F-DDL-1`, rote Phase 3/3 gesehen) · **im Betrieb belegt 31.08.2026** `[gemessen]`: 14 Torzeilen ueber zwei Reihen, **ein Faden entstanden** und nach Befund verworfen; Torschwellen Salienz 0,70 (echte Gespraechsturns 0,44–0,73) und Ausschlag 0,70 | **🟠, nicht 🟢:** ~~Die Verstaerkung fehlt~~ → **Scheibe 2 gebaut am 01.09.2026**: scharfes Segment-Embedding, Zuordnung Reaktivierung → Faden ueber Naehe 0,62 (Nulllinie gemessen), Faltung gegen die gerechnete Tabelle des Konzepts (18 Stuetzstellen). **Im Betrieb belegt 01.09.2026** `[gemessen]`: 13 Torpruefungen, 4 Faeden, Ausschlag 0,26 bis 1,00; die Auffrischung laeuft (6 Aufrufe, 2 Kandidaten je Turn), **Beruehrungen 4** in der vierten Reihe (Naehen 0,682 · 0,684 · 0,739 · 0,682) — **vorher ausgerechnet** statt geraten, Vorhersage 2/1/2 gegen gemessen 1/1/2. Alle vier nahen Eintraege tragen `beobachter = assistant`. ~~**Aber `ausschlag_aktuell` bewegt sich nicht**~~ → **behoben am 01.09.2026, 15:05 UTC**: `ausschlag_aktuell_nachfuehren` faltet von Grund auf und schreibt die Spalte, gerufen von `beruehrung_aus_reaktivierung` und **ausserhalb deren Transaktion**; `[gemessen]` im Betrieb 327: 0,793893 → 0,792117, 354: 1,000000 → 0,998756. `tests/test_praegung_nachfuehrung.py` (9 Zeugen, drei davon auf die Verwendung; Gegenproben 2/2 und 1/1; **beide Schreibwege** falten, auch `beruehrung_anlegen`). ~~**Offen bleibt der Verfall zwischen zwei Beruehrungen**~~ → **am selben Tag geschlossen**: `alle_faeden_nachfuehren` faltet den ganzen Bestand als vierter Schritt im Tageslauf des `SynapsenDecayAgent`, Zusicherung ist die Vollstaendigkeit (`gefaltet` und `gesamt`); `[gemessen]` 4 von 4, Faden 328 ohne Beruehrung bei 0,9951, Faden 354 mit dreien bei 0,9986. `tests/test_praegung_bestandslauf.py` (8 Zeugen, Gegenprobe 2/2). Nur der thematische Andockweg und nur LZG-Reaktivierungen. Ein Defekt aus Scheibe 1 dabei behoben: `FADEN-EMBEDDING-VERDUENNT` (Archiv). ~~Offen bleiben Straenge~~ → **Scheibe 3a gebaut am 01.09.2026, 19:45 UTC**: `praegung_strang` mit fortgeschriebenem Zentroid, `praegung_faden.strang_id`, Beitritt ueber `PRAEGUNG_STRANG_NAEHE` 0,62 und Nachzug als fuenfter Schritt des Tageslaufs. `tests/test_praegung_strang.py` (13 Zeugen, Gegenproben 1/1 und 1/1). **Im Betrieb belegt** `[gemessen]`: Vorhersage 1 Strang, Lauf **1 Strang, 4 von 4** zugeordnet — und die Schwelle trennt: das Zentroid gegen 15 LZG-Themenknoten erreicht **kein einziges Mal** 0,62 (naechster 0,5165, fernster 0,0550). **Achsen und `strang_staerke` ausdruecklich nicht gebaut** — die drei Gewichte sind nirgends beziffert, die Annaeherungs-Tabelle ist gesetzt und ungemessen. Dabei gefunden: die Suite schrieb ueber zwei Wege Straenge in den Produktivbestand, beide geschlossen, Gegenprobe 0 Zeilen. **Scheibe 3b am selben Tag, 20:00 UTC**: das Sektor-Histogramm des Strangs — acht Zahlen im Bestand, dazu dominanter Sektor, Konzentration und Valenz; Faeden gezaehlt statt Ausschlaege gewichtet, Sektor 4 in keiner Richtung. `tests/test_praegung_histogramm.py` (12 Zeugen, Gegenproben 2/2 und 1/1). `[gemessen]`: **[3,0,0,0,0,0,0,1]**, dominant 1, Konzentration 0,750, Valenz +1,000 — Vorhersage zeichengleich. **Vorbehalt:** alle vier Faeden positiv, der bimodale Fall ist bezeugt und nicht gemessen. ~~**Die Richtung fehlt**~~ → **Scheibe 3c am selben Tag, 20:48 UTC**: vier Regeln, und sie steht **nicht im Bestand** — ein Strang ist Bestand, das Rad ist Zustand. Sektor 8 ueber 0,25 zieht ohne das Rad · Awe-Dyade zieht · dominant positiv zieht · sonst entscheidet ein `konfrontationsmass` aus acht Speichen beider Raeder. `tests/test_praegung_richtung.py` (16 Zeugen, Gegenproben 1/1 und 1/2 — die zweite Vorhersage lag falsch, nicht der Zeuge). `[gemessen]`: Novas Mass **+0,5379**, der eine Strang **annaeherung** ueber Regel 1. **🔴-Vorbehalt: Regel 4 trennt heute nichts** — Aerger, Furcht und Trauer ergeben alle drei Annaeherung, die Achse faellt keine Entscheidung, die Regel 1 nicht schon faellt. **Scheibe 4 am 02.09.2026**: die Ladung — `0,4·mittel(salienz) + 0,2·mittel(|valenz|) + 0,4·n/(n+4)`, mal Praesenz; neue Spalte `praegung_faden.salienz`, die Staerke selbst nicht gespeichert. `tests/test_praegung_ladung.py` (16 Zeugen, Gegenproben 3/2 und 2/2). `[gemessen]`: **0,66162** (nach der Valenz-Tabelle vom selben Tag; davor 0,69476). **Dabei gefunden:** eine Aggregat-Abfrage zaehlte Paare statt Faeden (8 statt 4) — 16 gruene Zeugen sahen es nicht, die Vorhersage schon. ~~Offen bleiben Praegungszug und Verfall.~~ → **Scheibe 5 am 03.09.2026, 18:57 UTC**: der **Praegungszug** — `1,0 + PRAEGUNG_ZUG_HUB · max_j(sim_j · gewicht_j · ladung_j)`, gerechnet je Turn im Faden-Tor und als `praegung_zug` protokolliert. **Vorgabe des Eigentuemers:** Vermeidung traegt 0 (*„genau das, was wir nicht als Faszination wollen — wir filtern es einfach raus"*), `unbestimmt` traegt 0,5 (Unkenntnis, nicht Vermeidung), Annaeherung 1,0. Der Hub ist aus der Spanne **abgeleitet** statt gesetzt (`F-NAHT-1`), das Ergebnis liegt durch Konstruktion auf [1,0 … 1,6] und wird nicht gekappt. Ein **Maximum**, keine Summe, mit exaktem Abbruch. `tests/test_praegung_zug.py` (15 Zeugen, davon drei auf die Verdrahtung und **zwei auf die Abfrage selbst**; Gegenproben 1/1, 2/1 und 1/1). `[gemessen]` 03.09.2026 ueber alle fuenf Faeden des Bestands als Reiz: **1,3087 bis 1,3487**; Kreuzprobe eines fremden Themas **1,0693** bei sim 0,2245 — nah und fern trennen im Betrieb. **Dabei gefunden:** eine Klammer `max(0.0, naehe)` als Schutz gegen negative Naehe war **toter Code** — sie liess sich entfernen, ohne dass ein Zeuge rot wurde; der Abbruch traegt die Zusicherung. **Vorbehalt:** Beide Straenge stehen auf *Annaeherung* — die Gewichte 0,5 und 0,0 sind bezeugt und **ungemessen**, und ueber die richtige Spanne sagen zwei Straenge nichts. ~~**Offen bleiben ein Leser fuer den Zug und der sektorabhaengige Verfall.**~~ → **Scheibe 6 am 03.09.2026, 19:30 UTC**: die **Einfaerbung** — dieselbe Faltung mit `t x sektor_faktor`, negative Sektoren (3, 5, 6, 7) auf **1,5**, positive und Ueberraschung auf 1,0. Der Fading-Affect-Bias wirkt **nur** hier und nicht auf den Ausschlag; sonst verloere Kriegsgeschichte ueber Monate gegen Gartenkraeuter. Nicht gespeichert, siebter Schritt des Tageslaufs. `tests/test_praegung_einfaerbung.py` (11 Zeugen, Gegenproben 4/4, 4/4, 1/1 und 5/5). **Der Betrag ist eine Setzung mit Herkunft:** 1,5 ist das Verhaeltnis der Rad-Asymmetrie (0,60 nach oben, 0,40 nach unten) — **nicht** aus `EMOTION_AROUSAL_DECAY` abgeleitet, deren Werte (Trauer 0,02 gegen Freude 0,10) den Bias umkehren wuerden; sie beschreibt die Erregung im Turn, nicht den Affekt ueber Monate. `[gemessen]` 03.09.2026: **groesster Abstand 0,000000 bei 5 von 5 Faeden** — ~~die Schicht hat bis heute **keinen einzigen negativen Faden** aufgenommen~~ **[Zweimal berichtigt, 03.09.2026. Erst: Das Tor hat einen durchgelassen — Faden 41, `traurigkeit`, 31.08.2026 18:41 UTC. Dann, genauer: Diese Zeile stammt vom **Testpaar** `sektorprobe` aus einer Sektor-Messreihe und wurde mit deren Bestand entfernt. **Im echten Paar `meister`/`nova` trug in 32 Torprüfungen keine einzige eine negative Emotion.** Das Tor hat nichts abgewiesen — es hat nie negatives Material gesehen.]**, der Mechanismus ist im Bestand ohne Eingabe. Die Trennung ist an denselben Daten mit getauschter Emotion gerechnet (0,007–0,014) und hat ein Fenster: 3,9 % nach einer Woche, **14,3 % nach 120 Tagen**, 3,7 % nach fuenf Jahren. **Offen bleiben Verbraucher fuer Zug und Einfaerbung** — Faszination, Ziele, LZG und EI-Calc sind nicht gebaut. Alt: Die Verstaerkung fehlte — `praegung_beruehrung` steht, `beruehrung_anlegen()` ist gebaut und getestet, hat aber **keinen Aufrufer**; die Zuordnung Reaktivierung → Faden ueber Embedding-Naehe (§7.12) ist Scheibe 2. Damit bleibt `ausschlag_aktuell` fuer immer gleich `ausschlag_absolut`. ~~Straenge, Praegungszug und Verfall sind nicht gebaut~~ → gebaut vom 01. bis 03.09.2026 (Scheiben 2–6). **Gegen den Code gehalten am 13.10.2026:** Die Torschwelle der Salienz steht auf **0,60** (`PRAEGUNG_TOR_SALIENZ`, `config.py:2066`), nicht auf 0,70. `[gemessen 13.10.2026]` 184 Faeden, alle mit Strang; seit dem 05.10. kein neuer (Pixie pausiert seit dem 03.10.) |
| **Emotionale Gravitation** (Erinnerung zieht) | 🟠 | **🔴 → 🟠 am 11.09.2026: der Antrieb ist angeschlossen.** Er stand im Salienz-Ergebnis als *nicht angeschlossen* mit dem Grund *unnormiert, Werte weit ueber 1.0* — hinfaellig seit dem 30.08.2026, als `gravitation_lzg_berechnen` die Division durch `LZG_KNOTEN_GEWICHT_CAP` bekam. `[gemessen 11.09.2026 ueber 888 Kandidaten aus 447 Turns]` Spanne **0,184 bis 0,708**, kein Wert ueber 1,0; **der Eintrag stand elf Tage laenger als sein Grund**. Vorausgerechnet vor dem Bau: Er gewinnt das `max()` in **44 von 488 Turns (9,0 %)** — der Unterschied zum Zielsog, der in 4 von 2786 Zeilen entschied und deshalb zum Zug umgebaut wurde. Genommen wird das **Maximum** der aktivierten Punkte, nicht ihre Summe. 7 Zeugen (`tests/test_salienz_emgrav_naht.py`, davon 3 auf die Verdrahtung), Gegenprobe 5 vorhergesagt / 5 gezaehlt. **🟠, nicht 🟢:** Die Wirkung im Betrieb ist gerechnet, nicht gemessen. Alt: `ei/gravitation.py` `[Code]` · `tests/test_emotionale_gravitation_node.py::TestHerkunftstor` · `tests/test_emgrav_schwelle_skala.py` (5 Zeugen mit Bestandszahlen) · **Herkunftstor im Betrieb belegt 24.08.2026** `[gemessen]`: **15 Feuerungen auf 15 Impuls-Turns**, jede mit **genau 2** unterdrueckten Punkten und keine mit 0 — es schliesst also nicht im Leerlauf; im selben Fenster **32** Faerbungen durchgelaufen. **Die Schwelle lehnt seit dem 30.08.2026 wieder ab** `[gemessen]`: 0,71 Aktivierungen je Turn statt 2,00, 28 von 56 Turns ohne jede Aktivierung, 16 statt 57 verschiedene Knoten | `EMOTIONALE_GRAVITATION_FAKTOR_SESSION` ohne Leser `[gemessen]` · **🔴 seit 20.08.2026** (zuvor 🟢): `ZUG-ZWISCHEN-090-097-ABGESCHALTET` offen. `GRAVITATION-FAERBT-EIGENE-GEDANKEN` ist am 23.08.2026 behoben und seit dem 24.08.2026 im Betrieb gemessen — der eigene Gedanke bleibt ungefaerbt. **`EMGRAV-SCHWELLE-TOT` und `EMGRAV-KANDIDAT-OHNE-KENNUNG` am 30.08.2026 behoben:** `gewicht_decay` lief auf `[0,10]` gegen eine Schwelle fuer `[0,1]` und lehnte nichts mehr ab (alle 3.266 aktiven Knoten ueber 1) — die Auswahl traf allein `LIMIT 10` und `MAX_PRO_TURN`; der Kandidat trug zudem keine Knoten-Kennung, womit keine Aktivierung zaehlbar war. Beides behoben, `pipeline_log`-Zeile `emgrav_aktivierung` neu. **Die Ampel bleibt 🔴**, weil `ZUG-ZWISCHEN-090-097-ABGESCHALTET` weiter offen ist |
| **Wahrnehmungs-Gravitation** (Synapsen P10) | 🟠 | `wahrnehmung_verschieben()` gebaut, live gemessen `[Doku]` | **Wirkung ungemessen** — ob sich je eine Trefferliste ändert, ist offen |
| **Anker-Emotion** (Grundemotion je Charakter) | ⚫ | kein Code `[Code]` | alles |
---
## 3. Gedächtnis
### 3.1 Die Speicher
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **Session-Gedächtnis** (Redis, Turn-Formatierung) | 🟠 | 2.893 Redis-Keys `[gemessen]` · `tests/test_verlauf_sprecher.py` (13) | Die Session **stirbt nicht** — jeder Impuls verlängert die Frist (Eigenzeit §2, Bauteil C). **`IMPULS-FAELLT-AUS-DEM-VERLAUF` am 24.08.2026 behoben** `[gemessen]`: Die Paarbildung liess **8 von 24** Turns aus dem Verlauf fallen — jeden Eigen-Impuls —, und Nova schrieb daraufhin einen eigenen Vorschlag dem Nutzer zu. Der Sprecher kommt jetzt aus `herkunft` statt aus der Position; ueber die echten Turns gefahren **8 hinein / 8 heraus**. **Bleibt 🟠, weil der Betriebsbeleg fehlt:** Er braucht die naechste Folge Impuls → Nutzerfrage, gelesen im Responder-Prompt |
| **Kurzzeitgedächtnis KZG** (Redis + Vektor) | 🔴 | **06.11.2026, offen:** `KZG-KANON-SCHREIBWEISE-GEHT-LEER` (niedrig) — ein `modus` *„Alltag“* geht leer hinein, während die Perzeption ihn zieht `[Code]`; bleibt 🔴 · **2.665 `kzg:*`-Keys** des Paares `[gemessen 21.08.2026]` · `novaberg-mem-kzg.md` · **Abrufschwelle am 21.08.2026 gemessen und auf 0,72 gesetzt** (`KZG_RETRIEVAL_SCHWELLE`) (vorher 0,40, unter dem Boden des Raums): am Bestand vorher/nachher — 10 unbezogene Fragen 100 → **0** Einträge, 3 anaphorische Rückfragen 30 → **0**, 3 einschlägige 30 → **30** `[gemessen]`, 6 Zeugen, Gegenprobe 5 von 6 rot · **im echten Turn belegt** (21.08.2026, 23:09–23:43 UTC): drei Turns gegen das laufende System liefern 0 / 0 / 10, dieselben drei gegen einen Server mit der alten 0,40 liefern 10 / 10 / 10 `[gemessen]` · 15.10.2026: Die Intentionstabelle in `memory/kzg.py` schreibt `bestaetigung` wie der Kanon — eine Bestätigung über hoher Salienz erzeugt keine Hintergrundaufgabe mehr (`INTENTION-BESTAETIGUNG-ZWEI-SCHREIBWEISEN` behoben, im Betrieb nicht gemessen); 7 Zeugen binden beide Intentionstabellen an den Kanon und aneinander (`tests/test_intention_tables.py`) `[Code]` · **23.10.2026** `[Code]`: Ein als neuer Knoten promoteter Eintrag verlässt das KZG mit der Promotion, nach einem Treffer bleibt er bis zur TTL (Code-Tree `2d18b83`, committet als `d11de95`; ~~im Betrieb nicht gemessen~~ → `[gemessen 23.10.2026]` im Betrieb an einem Prüf-Nutzer: nach der Neuanlage fort, nach einer Dublette stehen geblieben); die Leser der Partition sehen ihn danach nicht mehr (`novaberg-mem-kzg.md` §5a) · **26.10.2026:** `modus` und `intentionen` der Salienz gehen nur als Kanon-Werte in den KZG — ein fremder Modus leer, eine fremde Intention verworfen, je mit Fehlerzeile, in allen drei Schreibern (Code-Tree `6feb70a`, Kennung wird nachgetragen → committet als `e71df6b`, die Doku dazu als `7b35557`; `tests/test_kanon_usage.py`) `[Code]`; vor dem Commit an 2785 Schatten-Aufträgen und 4571 LZG-Knoten gemessen, geleert und verworfen werden genau die Werte außerhalb `[gemessen 26.10.2026]`; im Betrieb nicht gemessen | **🟢 → 🔴 am 26.10.2026:** `KZG-THEMA-VERSTAERKT-NACHBARN` ist offen, ein Defekt des KZG, und die Ampel stand trotzdem auf 🟢; `KANON-FELDER-NEHMEN-FREMDWERTE`, das seit dem 29.07.2026 ebenfalls darauf zeigte, ist am selben Tag geschlossen (Archiv) · ~~`KZG-SEGMENT-DUPLIKAT`~~ geschlossen (Archiv Gedächtnis), `KZG-VERDICHTER-KONTEXT-VERLUST` offen (Backlog) |
| **KZG-Magnetfelder** (`entitaet_ids`, `timeline_id`) | 🔴 | **08.11.2026: jede Entität höchstens einmal je Eintrag** — `_entitaeten_aufloesen` hängt jede Kennung höchstens einmal, in der Reihenfolge ihrer ersten Nennung an; Code-Tree `e8fd0c9`, Kennung wird nachgetragen; 7 Zeugen `tests/test_aufloesung_laut.py`, Server-Suite am Tree `ea6e973` `Ran 5629 tests` · `OK (expected failures=2)` `[Code]` · vor dem Commit gemessen am frischen Hash und am Knoten nach der Promotion: 4 von 4 ohne Dublette, am Verhalten davor 3 von 4 mit `[gemessen 07.11.2026]`; bleibt 🔴 · **24.10.2026, offen:** `MAGNET-ANKER-VERGANGENES-WIRD-KOMMEND` (mittel) — der Erinnerungs-Anker eines berichteten vergangenen Monats liegt im kommenden Jahr: Der Magnet-Pfad parst `zeitausdruck_roh` ohne Zeitlage mit Vorzug der Zukunft `[Code]`; bleibt 🔴 · `[Code]` · Synapsen P3 · **22.10.2026, am Code geprüft:** `TIMELINE-CLIPBOARD-OHNE-ID` offen `[Code]` — ~~der Timeline-Agent setzt `timeline_id` nach einem Schreibauftrag nie, der Magnet-Pfad übernimmt deshalb keinen Termin und greift zum Erinnerungs-Anker des Tages~~ → **23.10.2026, behoben im Code-Tree `4d68f6e`** `[Code]`: Nach einem Anlegen oder Verschieben trägt das Clipboard die Kennung der geschriebenen Zeile, sonst keine, eine gefundene nie — 9 Zeugen, Suite 5188 grün, Gegenprobe 7 von 7; ~~im Betrieb nicht gemessen, die Kennung bleibt offen bis dahin~~ → committet als `4b5b3c8`, `[gemessen 23.10.2026]` im Betrieb an einem Prüf-Nutzer: `timeline_id` ist die `id` der geschriebenen Zeile, ein Duplikat setzt keine; die Kennung ist im Archiv | — · **🔴 seit 20.08.2026** (zuvor 🟢): `ENTITAETIDS-MIT-DUBLETTEN` offen → **08.11.2026: offen mit Rest** — der Schreibweg ist behoben, 8 von 4571 Knoten im LZG tragen eine Dublette aus der Zeit davor `[gemessen 07.11.2026]`; ob die Schließbedingung den Bestand meint, ist offen |
| **Synapsen-Modell** (`lzg_knoten` + `lzg_kanten`) | ~~🟠~~ → ~~🔴 (22.10.2026; bleibt 🔴 am 23. und 24.10.2026)~~ → ~~🟠 (24.10.2026, 13:43 UTC)~~ → 🔴 (24.10.2026, 16:50 UTC) | **🟠 → 🔴 am 24.10.2026, 16:50 UTC:** eine offene Kennung zeigt darauf — `LZG-KANTEN-BESTAND-AUF-ALTEM-KNOTENGEWICHT` (mittel, wartet auf eine Absicht): 155.998 von 639.734 Kanten stehen nicht auf der Stärke, die Trigger 2 aus den heutigen Knotengewichten rechnet `[gemessen 24.10.2026]`; die Rechnung ist seit Mai beziehungsweise Juli 2026 unverändert, verschoben haben sich die Eingänge `[Code]` · **3.318 Knoten** `[gemessen 03.09.2026]` · seit dem 04.09.2026 traegt der Dispatcher die **Verwendungs-Verstaerkung** (`memory/usage_reinforcement.py`, Schwelle 0,55 aus 75.975 Paaren, Deckel 3; gegen den Bestand 13/15 Turns, **0 von 45 fremden** Kandidaten) und der Enricher protokolliert `lzg_resonanz_ids` · **🔴 seit dem 22.10.2026, am Code geprüft:** `LZG-KANTEN-NACH-VERWENDUNG-UNVERAENDERT` offen `[Code]` — nach einer Verstärkung über die Verwendung bleiben die Kanten des Knotens auf dem alten Anker, Trigger 2 läuft nur in der Promotion; ~~offen ist zudem, ob der Embedding-Treffer der Promotion weiter verstärken soll (§7.1a gegen K10, `novaberg-memory-synapsen_e.md` B)~~ → **am 23.10.2026 entschieden: Es gilt §7.1a**, ein Embedding-Treffer der Promotion verhindert nur die Dublette und verstärkt nicht (`novaberg-memory-synapsen_e.md` A, E7) · **dazu offen seit dem 23.10.2026:** `LZG-PROMOTION-TREFFER-VERSTAERKT` (mittel) `[Code]` — ~~der Code verstärkt beim Treffer weiter, samt Trigger 2 (`agents/synapsen_promotion/agent.py`, Zweig *Reinforcement-Pfad (K10)*, gelesen am `5c00a98`)~~ → **23.10.2026, behoben im Code-Tree `5342a6a`** `[Code]`: Ein Treffer auf einen aktiven Knoten ist eine Dublette und lässt ihn unverändert; **dazu `KZG-EINTRAG-BLEIBT-NACH-PROMOTION` behoben im Code-Tree `2d18b83`**: Ein als neuer Knoten angelegter Eintrag verlässt das KZG mit der Promotion, nach einem Treffer bleibt er bis zur TTL — 11 Zeugen (`tests/test_promotion_umzug.py`), Suite 5188 und für beide Bauten 5199 grün, Gegenprobe 7 von 8, kein blinder Zeuge; ~~beide im Betrieb nicht gemessen und offen bis dahin~~ → committet als `d11de95` und `782274c`, beide `[gemessen 23.10.2026]` im Betrieb an einem Prüf-Nutzer (nach der Neuanlage der Hash fort; die Dublette lässt den Knoten unverändert, `haeufigkeit` 1, `gewicht_roh` 0,8) und im Archiv. Rot hält die Zeile weiter `LZG-KANTEN-NACH-VERWENDUNG-UNVERAENDERT`, seit dem Bau **mittel**: Trigger 2 hat im Betrieb keinen Aufrufer mehr · **24.10.2026, behoben im Tree `3a5ccab`** `[Code]` (Kennung wird nachgetragen → committet als `570cdda`): Nach jeder gelungenen Verstärkung über die Verwendung rechnet `reinforce_used` die Kanten des Knotens über Trigger 2 neu (`lzg_kanten.kanten_neuberechnen_mit_befund`); `kanten_neu`, `kanten_fehler`, `kanten_dauer_ms` und `error` stehen im `pipeline_log`. 11 neue Zeugen, die Kantenzeugen gegen die Testdatenbank der Suite, Suite `Ran 5220 tests` grün; Gegenprobe 6 von 6 mit einem blinden Zeugen, danach zwei Zeugen mehr und 2 von 2. `[gemessen 24.10.2026]` vor dem Commit, am Bestand: 155.998 von 639.734 Kanten nicht auf der Stärke, die Trigger 2 heute rechnet; nicht nachgerechnet. ~~**Bleibt 🔴:** `LZG-KANTEN-NACH-VERWENDUNG-UNVERAENDERT` offen bis zur Messung im Betrieb~~ → **im Betrieb gemessen** `[gemessen 24.10.2026]` (13:23–13:26 UTC, am Code von `570cdda`, ein Messturn): Die Zeile `verwendung_verstaerkung` trägt `verstaerkt` 2, `kanten_neu` 1044, `kanten_fehler` leer, `kanten_dauer_ms` 188,1; danach weichen **0 von 1044** Kanten der beiden verstärkten Knoten von der Stärke ab, die Trigger 2 rechnet, Seiteneffekte 0 (`novaberg-memory-synapsen_m.md`, *Aus §7.9.2*). `LZG-KANTEN-NACH-VERWENDUNG-UNVERAENDERT` ist geschlossen und im Archiv. **🔴 → 🟠:** Rot hielt die Zeile seit dem 23.10.2026 allein diese Kennung (oben: *„Rot hält die Zeile weiter …“*), und kein anderer offener Eintrag des Defektregisters nennt die Zeile; `KZG-THEMA-VERSTAERKT-NACHBARN`, das der Rest nennt, ist ein Defekt des KZG und hielt sie seit dem 04.09.2026 auf 🟠, nicht auf 🔴. Nicht 🟢, weil dieser Rest bleibt (`KZG-THEMA-VERSTAERKT-NACHBARN` offen, die Lesepfad-Umstellung `SYNAPSEN-DUAL-LZG` offen) | **🟠, nicht mehr 🟢, seit dem 04.09.2026:** Die Knotendynamik ist aufgeblaeht — `KZG-EINTRAG-BLEIBT-NACH-PROMOTION` (95,2 % aller 14.947 Verstaerkungen mit `cosine = 1.0000`, bis zu 91 je Turn) und `KZG-THEMA-VERSTAERKT-NACHBARN` bilden eine geschlossene Schleife; `haeufigkeit`/`gewicht_roh` messen **Wiederholung statt Wiederkehr** (ueber verschiedene Turns: 1.250 → 106 Traeger mit Wiederkehr >= 2). Regel: `novaberg-memory-synapsen_k.md` §7.1a. `VERSTAERKUNG-OHNE-VERWENDUNG` am Tag des Befundes behoben (Archiv). **Betriebsbeleg 04.09.2026: der Mechanismus laeuft und verstaerkt nichts** — zwei Turns, je 3 geprueft, 0 verwendet. Nachgerechnet liegen die Naehen bei **0,15 bis 0,4334**, also im Zufallsbereich (Maximum 0,5305): Der Nullbefund ist richtig, es fehlen Turns, in denen Nova eine Erinnerung wirklich aufgreift. Die Protokollzeile traegt seit dem 04.09.2026 die Entscheidung statt nur ihr Ergebnis (§7.1a). Lesepfad-Umstellung `SYNAPSEN-DUAL-LZG` weiter offen. **Anfangsgewicht gemessen am 20.09.2026** (`SYNAPSEN-K8-SKALA`, `[gemessen]`): 2.413 nie verstärkte Knoten nach dem Skalenumbau starten mit `gewicht_roh` 0,727 bis 1,0 und `gewicht_absolut` 3,376 bis 3,955; keiner liegt unter der Deaktivierungsschwelle 0,1, 0 inaktiv. **Am 20.09.2026 entschieden: keine Umrechnung** — der untere Bereich der Skala gehört dem Verfall, nicht der Anlage; nach oben bedient die Verstärkung sie (`novaberg-memory-synapsen_e.md`, K8, E6) |
| **Langzeitgedächtnis alt** (`langzeitgedaechtnis`) | 🟢 | abgelöst und gelöscht (P9) `[gemessen]` — Tabelle existiert nicht mehr | — |
| **Ebbinghaus-Decay + Soft-Delete** | 🟢 | `SynapsenDecayAgent`, 40 Läufe im Log `[gemessen]` | `EBBINGHAUS_DECAY_RATE`, `EBBINGHAUS_MIN_GEWICHT` ohne Leser `[gemessen]` |
| **Halbreaktivierung** (§9.3) | ~~🟠~~ → 🔴 (22.10.2026) | `reactivate_node` gebaut `[Code]` · **🔴 seit dem 22.10.2026, am Code geprüft:** `LZG-HALBREAKTIVIERUNG-HAELT-EINEN-TAG` offen `[Code]` — der Halbwert hält nur bis zum nächsten Tageslauf, weil `run_node_decay` vom Anker aus rechnet (im Beispiel von §9.3 nach einem Tag ≈ 3,99 statt 2,05) · **23.10.2026** `[Code]`: Der Zweig der Promotion ist bezeugt — ein Treffer auf einen deaktivierten Knoten weckt ihn ohne Verstärkung, und der KZG-Hash bleibt danach bis zu seiner TTL stehen, ob das Wecken gelingt oder nicht (`tests/test_promotion_umzug.py`, Code-Trees `2d18b83` und `5342a6a`) | `HALBREAKTIVIERUNG-LIVE`, `SYNAPSEN-REAKTIV-SCHWELLE` — nie beobachtet |
| **Knowledge Graph — Entitäten** | 🟢 | **726 Entitäten**, 0 ohne Embedding `[gemessen]` | `ENTITAET-EMBED-DREIFACH` offen (einziges `TODO` im Code) |
| **Knowledge Graph — Fakten** (bi-temporal) | 🔴 | **0 Zeilen** `[gemessen]` — Enrichment seit Chat 71 abgeschaltet | `FAKTEN-RAUSCH`, `FAK1`, `D9`, `FAK-LECK` offen; ohne Fakten läuft der ganze Faktenpfad leer |
| **Faktengedächtnis** (je Paar, bi-temporal, die Mappe bis zum zweiten Grad, geschrieben nur vom Fakten-Agenten; `novaberg-memory-fakten_k.md`, Bauteile in `_b`) | ~~⚫~~ → 🟠 (18.10.2026) | **Schritt 3 gebaut am 18.10.2026** (Tree `00c7b4c`): Schema S1–S4 an `fakten` und das Repository im Paar, Lesen ohne Schreiben, Ablösen auf dem Cursor des Aufrufers, Verfall der Kanten im Tageslauf `[Code]` — Server-Suite gegen die Testdatenbank `Ran 4739 tests` (Nulllinie 4692 und 47 neue, alle grün; rot dieselben drei wie in der Nulllinie), der Verfall an gesäten Kanten von 0, 30 und 365 Tagen gemessen `[gemessen 18.10.2026]`; 🟠 und nicht 🔴, weil die offenen Kennungen (`FAKTEN-PAIR-IGNORED` mit dem Rest an zwei Lesestellen, `FAKTEN-UNAUFGELOESTES-OBJEKT-WIRD-WERT`) auf Leser und Plugin zeigen, die eigene Zeilen oder eigene Schritte haben (FaktenManager 🔴, Schritt 5) → 26.10.2026: beide geschlossen — `FAKTEN-PAIR-IGNORED` mit dem Entfernen der zwei Lesestellen am Repository vorbei (`de3e5b4`, `4cfa39e`), `FAKTEN-UNAUFGELOESTES-OBJEKT-WIRD-WERT` gegenstandslos mit dem Löschen des Plugins (`bbf6c27`); Archiv [`novaberg-bugs-archiv-wissen.md`](novaberg-bugs-archiv-wissen.md) `[Code]` · ~~kein Code dieses Konzepts `[Code]`~~ · die Tabelle `fakten` ist stillgelegt bis zum Fakten-Agenten (entschieden am 06.10.2026) und trägt 0 Zeilen ~~`[Doku]`~~ → `[gemessen 17.10.2026]` · **M1 gemessen am 17.10.2026** `[gemessen]`: Die Salienz trennt Person von Sache (am echten Paar Median 0,70 gegen 0,30), nah nicht von fremd (synthetisch Δ Median 0,00, AUC 0,47; kleine n) — Backlog `SALIENZ-TRAEGT-NAEHE-NICHT` | alles · entworfen am 17.10.2026 nach den Entscheidungen des Meisters vom selben Tag; ~~vor dem Bau zwei Messpunkte (M1, M2) und~~ → M1 gemessen, M2 nach F1, weil er einen Bau braucht (17.10.2026); vor dem Bau fünf Fragen der Bauart (`_k` §5) — die erste, die Termine ohne Router über den gemeinsamen Leseweg, ist am 17.10.2026 entschieden und gebaut (↳ *Scheibe 13* in §6, kein Code dieses Konzepts) · → **die übrigen vier am selben Abend entschieden, nicht gebaut** (`novaberg-memory-fakten_e.md` A, Nr. 13–22): Eigenschaft und Fakt getrennt, die feste Typliste, der Typ `ereignis` in der Timeline, der Erinnerungsanker nach der Sachlage; dazu ein- und mehrwertige Beziehungen und die Schemaänderungen S1 bis S6 im Grundsatz freigegeben, jede DDL vor ihrem Bau einzeln angekündigt; die Bauart je Bauteil und die Reihenfolge in elf Schritten in `_b` §6 |
| ↳ **F1 — die Mappe lesen** (beide Richtungen, zweiter Grad, Wert-Fakten mit, eine Lesefunktion) | ~~⚫~~ → 🟠 (21.10.2026) | **Gebaut, nicht committet (00:32 UTC):** `FaktenRepository.find_umgebung`, `memory/fakten_mappe.py::load_mappe`, `GET /fakten/{user_id}/{entitaet_id}`; `_entity_kontext_laden` entfernt; das Plugin `fakten_manager` gelöscht (Suite `Ran 4914` OK); Suite `Ran 4908` OK; M2: Tiefe 2 trägt die Fragen des zweiten Grades, Tiefe 3 nicht verlässlich mehr · seit dem 22.10.2026 (Code-Tree `864c3b9`, mit F6) trägt ein Eintrag mit Verweis auf ein Ereignis *ab <Titel>, <Monat oder Datum>* und den abgelösten Wert mit *bis*, über `aktive_zeile` und nur für eine Zeile des eigenen Paares `[Code]` · **seit dem 22.10.2026 (gebaut und committet, Code-Trees `d810399`, `04f823e`) lesen zwei der drei Leser die Mappe:** das Angebot der Sachlage (`graph/nodes/sachlage_resolver.py::fact_hits`, Teil H) und der Erinnerungsanker (`graph/nodes/erinnerungsanker.py`) `[Code]` · kein Code `[Code]` — die ~~vier~~ → sechs alten Leser (`plugins/fakten_manager/manager.py::enrich_entries`, `fakten_abfragen`, `fakten_historie`; `graph/nodes/gespraechsvektor.py::_entity_kontext_laden`; gezählt am 17.10.2026 dazu `api/gedaechtnis.py::fakten_abrufen` und die Wiedervorlage `agents/wiedervorlage/agent.py`, `_k` §3.1) laden ohne Kappung oder nur Entität → Entität | alles; die Tiefe misst M2 · **Bauart vervollständigt am 20.10.2026** (`novaberg-memory-fakten_e.md` A Nr. 29–32): Leser sind Erinnerungsanker, Angebot der Sachlage und die Schnittstelle, nicht die Wiedervorlage und nicht der Fakten-Agent; das Durchlaufen im Repository, Kappung und Form in `memory/fakten_mappe.py`; mit F1 wird das alte Plugin gelöscht |
| ↳ **F2 — der Fakten-Agent** (~~Fachabteilung am Empfang~~ → passive Institution, `novaberg-memory-fakten_e.md` A Nr. 24; vier Ausgänge, verifiziert schreiben) | ~~⚫~~ → ~~🟠 (20.10.2026)~~ → 🔴 (24.10.2026) | **06.11.2026, offen:** `FAKTEN-NAME-AM-POSSESSIV-VERWORFEN` (niedrig) — `ICH heisst <Name>` fällt an jedem Possessiv der ersten Person `[Code]`; `FAKTEN-SUBJEKT-VERLIERT-TITEL` (niedrig) — das Modell kürzt einen Namen, der ein Ortsname ist `[gemessen 25.10.2026]`; bleibt 🔴 · **26.10.2026, keine Ampel wechselt:** `FAKTEN-HEISST-ICH-AUSGENOMMEN` (`6f3b463`) und `FAKTEN-SUCHE-PRIVATE-KLAERUNGSFRAGE` (`103777e`) sind seit dem 21.10.2026 committet und geschlossen (Archiv, [`novaberg-bugs-archiv-wissen.md`](novaberg-bugs-archiv-wissen.md)) `[Code]`. **Bleibt 🔴, weil eine offene Kennung darauf zeigt:** `FAKTEN-OHNE-EMBEDDING` (niedrig, aufgeschoben bis zum ersten Leser über Ähnlichkeit — `FaktenRepository.find_similar` hat außerhalb der Tests keinen Aufrufer); dazu zeigt `FAKTEN-EREIGNISVERWEIS-AM-BEZIEHUNGSFAKT` (mittel, offene Absichtsfrage) auf den Schreibweg des Agenten (`link_event`), belegt an ↳ *F6* · **25.10.2026, der Subjekttyp gebaut, getestet und vor dem Commit am Modell gemessen, ~~nicht committet~~ → committet als `a4997ac`, die Doku dazu als `277879b` (Code-Tree `47256bf` auf `042ab20`):** `beziehungen.py` trägt `ENTITY_TYPES` und je Beziehung `subjekt_typen` (`person` für jede; `heisst` jeder Typ außer `sonstiges`; `wohnt_in`, `geboren_in` dazu `tier`), `vet_triple` liest das Feld `typ` je Tripel und verwirft laut (`typ_form`, `subjekt_typ`), `sonstiges` geht durch `[Code]` · `[Test]` `test_fakten_subject_type.py` (neu), Suite am Code `Ran 5428 tests` · `OK (expected failures=2)` · `[gemessen 25.10.2026]` am Modell, 20 Fälle × 2, dem Bau nicht gezeigt: Feld `typ` 0 fehlt, 0 außerhalb der Liste, Subjekttyp getroffen 28 von 30, bei ICH 12 von 12 `person`; wegen des Typs verworfen 3, alle zu Recht, 0 zu Unrecht, kein Fakt der Nulllinie geht verloren; der Fall des Bugs selbst lieferte in der Reihe kein Tripel; vorher gemessen: `entitaeten` trägt 1095 × `sonstiges`, 57 × `user`, kein `ort`, kein `person` — eine Prüfung gegen `entitaeten.typ` hätte den Fall nie gefangen. Entschieden: `novaberg-memory-fakten_e.md` A Nr. 46. `FAKTEN-ORT-ALS-SUBJEKT-DURCHGELASSEN` geschlossen, im Archiv. **Bleibt 🔴, weil weiter offene Kennungen darauf zeigen:** `FAKTEN-OHNE-EMBEDDING` (niedrig, offen) sowie ~~`FAKTEN-HEISST-ICH-AUSGENOMMEN` und `FAKTEN-SUCHE-PRIVATE-KLAERUNGSFRAGE` (niedrig, im Tree behoben und bis zum Commit offen geführt)~~ → beide geschlossen am 26.10.2026. Im Betrieb nicht gemessen · ~~**🟠 → 🔴 am 24.10.2026:** eine offene Kennung zeigt darauf — `FAKTEN-ORT-ALS-SUBJEKT-DURCHGELASSEN` (mittel, still und schreibend): `vet_triple` prüft die Art des Subjekts nicht, ein Ort bestand als Subjekt von `hat_hobby` jede Prüfung (der Fall aus den Messturns vom 23.10.2026, unten); offen ist die Absicht, welche Beziehungen eine Person oder ICH als Subjekt verlangen~~ → geschlossen am 25.10.2026 (siehe oben) `[Code]` · **23.10.2026, im Betrieb** `[gemessen 23.10.2026]`: In Messturns an einem frischen Prüf-Nutzer schrieb der Agent 3 Fakten — die Tabelle `fakten` war vorher leer —, einer davon mit einem Ort als Subjekt statt der Person (Fundliste); bleibt 🟠 · **Bau 4 gebaut, nicht committet (23:47 UTC):** die Klassifikation auf die Kandidaten — ein Aufruf je Auftrag, nur Kandidaten des Menschen, `vet_triple` vor jedem Schreiben, Herkunft `mensch`; Suite `Ran 4853` OK; am Modell an einer blinden Reihe 0/20 falsch geschrieben; bekannte Grenzen: eine Person, die so heißt wie die Figur, gilt als die Figur und wird verworfen; *mag* neben einem echten Hobby wird als Vorliebe verworfen; *wir*/*uns* ohne Possessiv zählt nicht als Besitz des Menschen — alle drei auf der sicheren Seite (ein Fakt geht verloren, keiner wird falsch) · **Bau 3 gebaut, nicht committet (22:39 UTC):** Jeder gerechnete Turn mit Verlaufszeile gibt dem Agenten einen Schreibauftrag aus der Sachlage, ausgeführt vom Dispatcher nach der Antwort; der Agent zählt seine Kandidaten (`leer` / `ausgefallen` / `nicht_klassifiziert`), noch ohne Klassifikation; der Planner fragt bei einem Ziel `fakten` die Notizen. Suite `Ran 4825` wie die Nulllinie, Gegenprobe 5/5 · **Offen seit 20.10.2026** (Bugs, niedrig): ~~`FAKTEN-HEISST-ICH-AUSGENOMMEN`, `FAKTEN-SUCHE-PRIVATE-KLAERUNGSFRAGE`~~ (geschlossen am 26.10.2026), `FAKTEN-OHNE-EMBEDDING`; Backlog `FAKTEN-KANON-LUECKEN` · ~~kein Agent `[Code]`~~ → **der Schreibweg gebaut am 20.10.2026** `[Code]` `agents/fakten/` (Klassifikation nach einem Kanon von 23 Beziehungen, Prüfung der Antwort gegen die Bitte, Auflösung nur über den Namen, `FaktenRepository.schreiben`, Verifikation), ohne Objekt-Merkmal (A Nr. 23) · `[Test]` Suite 4739 → 4784, Bilanz wie die Nulllinie, sieben Gegenproben wie vorhergesagt · `[gemessen 20.10.2026]` Klassifikation am Modell des Betriebs: 41 Bitten, 0 falsch geschrieben, 2 verworfen; mit dem Agenten am Brett Notiz-Bitten 12 von 12 an die Notizen · **vom Brett genommen am 20.10.2026** `[Code]` `FactsAgent.zustellart = "queue"`, kein `dispatch_fakten`, das Plugin ohne Text und Intent · `[Test]` Suite 4788, Bilanz wie die Nulllinie · `[gemessen 20.10.2026]` Router ohne den Agenten: Notiz-Bitten 12 von 12 an die Notizen, keine an `fakten` | der Weg des Referenzwissens zum Agenten (A Nr. 24) → entschieden am 20.10.2026, ~~nicht gebaut~~ → Teil 1 gebaut (vom Brett), offen: Schreibauftrag aus der Sachlage über den Dispatcher, ein Dienst ohne Empfang (A Nr. 25–28), die Klassifikation auf die Kandidaten der Sachlage; der Empfang über den Router ist zurückgehalten (mit ihm bekamen drei Notiz-Bitten keinen Auftrag); die Simulation an einem Prüf-Nutzer · Backlog M2.5b |
| ↳ **F3 — Entitäten klären** (ein mehrdeutiger Name wird ein Klärfall am Objekt) | ⚫ | `[Code]` der Erzeuger steht: `memory/services/entity_resolution.py` liefert `braucht_klärung` mit Kandidaten; `agents/kzg/magnete.py` überspringt solche Namen still — kein Leser | der Klärfall, die Frage, die Bindung nach der Antwort (`novaberg-klaerung_k.md` §2.3) |
| ↳ **F4 — lernen ohne Auftrag** (über der Grenze der Salienz zustellen, darunter anbieten) | ⚫ | kein Code `[Code]` | alles; die Grenze erst nach M1 |
| ↳ **F5 — ablösen statt überschreiben** (bi-temporal, ohne Rückfrage) | ~~⚫~~ → 🟢 (20.10.2026) | `[Code]` `memory/repositories/fakten_repository.py::schreiben` — einwertig ablösen, mehrwertig hinzufügen, derselbe Wert nur aufgefrischt, in einer Transaktion · `[Test]` 14 Zeugen in `tests/test_fakten_schreiben.py`, Gegenproben ohne *identisch* 3 rot, nur gegen den jüngsten 1, ohne Rollback 1 · `[gemessen 20.10.2026]` gegen die Testdatenbank: *Kassel* → *Hamburg* → *Berlin* ergibt einen aktiven Wert von drei, in Folge; derselbe Wert ohne neue Zeile; zwei Haustiere beide aktiv | ~~der Schreibweg im Agenten~~ → im Betrieb erst mit dem Weg des Referenzwissens (↳ *F2*) |
| ↳ **S7 — die Timeline je Paar** (`timeline.character_id`; jeder Leser und Schreiber der Timeline im Paar, ohne Vorgabe-Figur; vor F6, `_b` §6 Schritt 10; [`novaberg-memory-fakten_e.md`](novaberg-memory-fakten_e.md) A Nr. 38) | 🟠 | **Neu am 21.10.2026, gebaut und getestet,** ~~nicht committet~~ → **committet als `2cfe1b0`** (Tree `2ec01b2`) `[Code]`: `agents/timeline/init.sql` — `character_id` Pflicht ohne Vorgabewert, der Bestand einmal auf `nova`, die Indexe `idx_timeline_paar_time` und `idx_timeline_paar_type`, die alten entfernt; `TimelineRepository` nimmt in `insert` und den sechs Lesern nach dem Menschen das Paar und wirft ohne Figur, bevor eine Verbindung entsteht; im Paar lesen und schreiben der Block `[TERMINE]`, das Kalender-Angebot der Sachlage, der Bestandsabgleich des Tribunals, die Werkzeuge des Thinkers, der TimelineManager, der Agent (ohne Figur `status: fehler`) und der Erinnerungs-Anker; die Wiedervorlage mit `nova` · `[Test]` `tests/test_timeline_pair.py`, Server-Suite `Ran 4993 tests` · `OK (expected failures=2)` (vorher 4968), neun Gegenproben wie vorhergesagt · `[gemessen 21.10.2026]` vor der DDL am Betrieb, nur lesend: 181 Zeilen, ~~173~~ → 170 aktiv (berichtigt am 22.10.2026: die Summe war falsch gerechnet), keine Figur in `user_id`, die Spalte fehlt · `[gemessen 21.10.2026]` **nach der DDL**, mit dem Neustart des Servers um 20:22:56 UTC, nur lesend: `character_id` `NOT NULL` ohne Vorgabe, alle 181 Zeilen `nova`, 170 aktiv; `idx_timeline_paar_time` und `idx_timeline_paar_type` stehen, `idx_timeline_type` und die Indexe über `user_id` sind fort; je Nutzer dieselben Zeilen wie vorher; `health` 200, kein Traceback — `TIMELINE-PAIR-MISSING` geschlossen | ~~die DDL am Betrieb nach dem Commit, mit dem Neustart des Servers, und ihre Messung: jede Zeile mit Figur, die Indexe je Paar, die alten fort; bis dahin `TIMELINE-PAIR-MISSING` offen — behoben im Tree~~ → angewandt und gemessen am 21.10.2026; offen bleibt der Turn mit einer Terminfrage, der seine Termine liest wie vorher |
| ↳ **F6 — Zeit über die Timeline** (der Fakt gilt ab dem Ereignis, kein Monat als Entität) | ~~⚫~~ → ~~🟠 (21.10.2026)~~ → 🔴 (22.10.2026) | **24.10.2026, offen:** `FAKTEN-EREIGNISVERWEIS-AM-BEZIEHUNGSFAKT` (mittel) — `link_event` hängt die `timeline_id` eines Ereignisses an jedes Tripel seines Kandidaten, auch an einen Beziehungsfakt, und die Mappe zeigt die Beziehung *ab* dem Ereignis `[Code]`; bleibt 🔴 · **Das Jahr aus der Zeitlage gebaut, getestet und am Modell gemessen (22.10.2026, 06:12 UTC, Code-Tree `452f786`)** `[Code]`: Ein Zeitausdruck eines Ereignisses ohne Jahr und nicht relativ zu heute (*im Mai*, *am 3. März*) bekommt sein Jahr aus der Zeitlage, die das Modell im Feld `zeitlage` nennt — angekündigt das nächste solche Datum, berichtet das letzte; ohne Zeitlage *angekündigt*, laut und mit der Herkunft `vorgabe` (`agents/timeline/ereignis.py::event_time_of`, `_tense_of`; Prompt `classify_ereignis` nur um dieses Feld erweitert) · `[Test]` `tests/test_timeline_ereignis.py` (`EventYearTest`, `EventYearServiceTest`, je mit Zwilling), Server-Suite `Ran 5104 tests` · `OK (expected failures=2)` (vorher 5077), Gegenproben wie vorhergesagt · `[gemessen 22.10.2026]` am Modell des Betriebs, vor dem Commit, Aufbau-, Rückhalte- und eine neue blinde Reihe: `zeitlage` 22/22 richtig, 0/22 aus der Vorgabe, der Eintrag 22/22, **angekündigt in der Vergangenheit 0/16** (vorher 5/8), berichtet in der Zukunft 0/6, das Tor 0/9 Fehlalarme — `EREIGNIS-KOMMENDES-WIRD-VERGANGEN` geschlossen · **🔴 wegen `EREIGNIS-KANDIDAT-OHNE-SPRECHER`**: 5 von 28 erwarteten Ereignissen erreichen den Ereignis-Aufruf nicht, weil die Sachlage für die Eigenschaft keinen Sprecher setzt · **Die Schritte 5–6 gebaut und getestet (22.10.2026, 06:06 UTC, Code-Tree `864c3b9`)** `[Code]`: Ein `ereignis` steht in `[TERMINE]` nach den Terminen unter eigener Kopfzeile, gekennzeichnet mit der Person (`graph/format/appointments.py::is_marked`, `event_line`, `EVENTS_HEADER`), nie als Termin des Menschen, ebenso im Angebot der Sachlage, in der Suche und im proaktiven Fenster; ein gekennzeichneter Typ, der als Termin gilt, wirft; ein Eintrag mit `month` gilt bis zum Monatsende als kommend und steht in jedem Fenster, das seinen Monat überlappt (`to_appointment`, `find_by_date_range`, `_past_bounds`); die Mappe folgt `fakten.timeline_id` über `aktive_zeile` und zeigt *ab*/*bis*, nur für eine Zeile des eigenen Paares (`memory/fakten_mappe.py::_with_reference`); eine genaue Angabe zum Monats-Ereignis derselben Person im Paar verschiebt die Zeile (`agents/timeline/ereignis.py::_move_event`, Ausgang `verschoben`); eine Quelle für `month` (`MONTH_PRECISION`) · `[Test]` `tests/test_ereignis_anzeige.py` (17 Testmethoden, je mit Zwilling), Server-Suite `Ran 5077 tests` · `OK (expected failures=2)` (vorher 5060), Gegenproben wie vorhergesagt · ~~im Betrieb nicht gemessen~~ → `[gemessen 23.10.2026]` im Betrieb, Messturns an einem frischen Prüf-Nutzer: Ein angekündigtes Ereignis einer anderen Person *im November* wurde eine Zeile mit `month`, *am 14. November* verschob sie (`nachfolger_id`, 14.11.2026, `day`), die Frage nach den Terminen im November zeigte sie unter *„Ereignisse im Umfeld von Person B“*, nicht als Termin; ein berichtetes Ereignis *im September* liegt im September 2026, *vergangen*; die Mappe nicht gemessen · **Die Schritte 3–4 gebaut, getestet und am Modell gemessen (22.10.2026, Code-Tree `04f386f`)** `[Code]`: Über der Grenze (`salienz_berechnen(salienz_human, 1) >= KZG_SALIENZ_HIGH`) stellt die Sachlage neben den Fakten-Auftrag einen passiven Auftrag `timeline`/`ereignis` (`build_event_order`); der Dispatcher führt ihn vor dem Fakten-Auftrag aus (`_run_passive_orders`); `agents/timeline/ereignis.py::process_event_orders` fragt das Modell (`classify_ereignis`; eine leere Liste ist kein Ereignis), liest die Zeit — ein Monat als `month` am Ersten, sonst ein Tag — und schreibt `ereignis` ohne Wiedervorlage in die Timeline des Paares, die Person in `entitaet_ids`, wenn ihr Name genau eine Entität trifft; der Fakt trägt `fakten.timeline_id`, ein gescheiterter Eintrag ergibt keinen Fakt · `[Test]` `tests/test_event_order.py`, `tests/test_dispatcher_passive_orders.py`, `tests/test_timeline_ereignis.py`, `tests/test_fakten_timeline_id.py`, Server-Suite `Ran 5060 tests` · `OK (expected failures=2)` (vorher 5027), Gegenproben wie vorhergesagt bis auf die Aussonderung nach dem Ziel allein (4 statt 2 rot) · `[gemessen 21.10.2026]` am Modell des Betriebs, 22 synthetische Sätze: das Tor 0/9 Fehlalarme und 9/11 Treffer, Titel 9/9, Zeitausdruck 9/9, Person 7/9, **der Zeitpunkt des Eintrags 4/9 — 5 von 8 angekündigten Ereignissen stehen in der Vergangenheit** · ~~**🔴 wegen `EREIGNIS-KOMMENDES-WIRD-VERGANGEN`**~~ → geschlossen am 22.10.2026 (oben) · **Die Grundlage gebaut und getestet,** ~~nicht committet~~ → **committet als `091a99d`** (20:11 UTC, Tree `fed521d`) `[Code]`: S5 — `timeline.nachfolger_id` mit dem Fremdschlüssel `ON DELETE SET NULL` und einem Teilindex, der Bestand `NULL`, ~~die DDL am Betrieb nicht angewandt~~ → die DDL angewandt am 21.10.2026, 20:22:56 UTC `[gemessen]`: Fremdschlüssel und Teilindex stehen, keine Zeile mit Nachfolger; die Typquelle `memory/timeline_types.py` mit dem Typ `ereignis` (bindet nicht, erinnert nicht, keine Wiedervorlage, kein Termin des Menschen und kein Duplikat-Partner), ein unbekannter Typ laut; `TimelineRepository.verschieben` in einer Transaktion, die alte Zeile zeigt auf die neue, und `aktive_zeile` folgt der Kette · `[Test]` `tests/test_timeline_successor.py`, `tests/test_timeline_types.py`, Server-Suite `Ran 5027 tests` · `OK (expected failures=2)` (vorher 4993), sechs Gegenproben wie vorhergesagt · ~~kein Code `[Code]`; `fakten` trägt keinen Verweis auf die Timeline `[Doku]`~~ → `fakten.timeline_id` steht seit dem 18.10.2026 (S2) `[Code]` | ~~alles; die Timeline kennt kein Ereignis einer dritten Person (`_k` §5, Punkt 4) — → entschieden am 17.10.2026 als Typ `ereignis` mit der Genauigkeit *Monat* und `timeline.nachfolger_id`, nicht gebaut~~ → ~~der Weg im Turn: niemand schreibt ein `ereignis` (keine Klassifikation, kein Schreiben aus der Sachlage, kein Weg über den Dispatcher), kein Fakt verweist auf seinen Eintrag,~~ ~~kein Verweis folgt dem Nachfolger (`TIMELINE-VERWEIS-VERALTET-BEIM-VERSCHIEBEN`)~~ → die Mappe folgt ihm für `fakten.timeline_id` seit dem 22.10.2026, ~~die Genauigkeit *Monat* (S6),~~ ~~die Kennzeichnung in `[TERMINE]`, die Mappe~~ → gebaut am 22.10.2026 (Code-Tree `864c3b9`); ~~dazu der Commit und die DDL am Betrieb mit ihrer Messung~~ · die Vorbedingung S7, die Timeline je Paar, ~~gebaut im Tree am 21.10.2026~~ → committet und angewandt (Zeile darüber) · → ~~**seit dem 22.10.2026:** `EREIGNIS-KOMMENDES-WIRD-VERGANGEN` — ein angekündigtes Ereignis in einem vergangenen Monat ohne Jahr steht in der Vergangenheit, die Behebung ist als eigener Bau geplant (das Jahr aus der Zeitlage des Satzes);~~ → behoben und am Modell gemessen am 22.10.2026; `EREIGNIS-KANDIDAT-OHNE-SPRECHER` — ein Ereignis, für dessen Eigenschaft die Sachlage keinen Sprecher nennt, erreicht den Ereignis-Aufruf nicht; ~~die Schritte 5–6, im Bau: die Kennzeichnung in `[TERMINE]` (bis dahin liest der Leseweg ein `ereignis` wie einen Termin), die Leser des Monats, die Mappe, die Klärung eines offenen Tages mit dem Verschieben; der Verweis des Fakts (`fakten.timeline_id`) folgt dem Nachfolger ebenso wenig;~~ → die Schritte 5–6 gebaut am 22.10.2026 (Beleg); ~~die Messung im Betrieb an einem Prüf-Nutzer — ein Ereignis mit Monat, die Frage nach den Terminen des Monats, eine genaue Angabe danach —~~ → gemessen am 23.10.2026, bis auf die Mappe; ein angekündigtes Ereignis in einem vergangenen Monat (die Sachlage fiel aus); das Verschieben über den Agenten |
| ↳ **F7 — typisieren** (*„ist ein“* gibt den Typ) | ⚫ | `[Code]` `agents/kzg/magnete.py` legt jede Entität mit dem Typ `sonstiges` an | alles; ~~welches Typsystem gilt, ist offen~~ → das Typsystem ist entschieden am 17.10.2026: die feste Liste ~~von `entitaeten.typ`~~ → als Typ-Fakt in der Faktentabelle, ein zwingender Wert aus der Liste der sechs, dem Paar gehörend (21.10.2026, [`novaberg-memory-fakten_e.md`](novaberg-memory-fakten_e.md) A Nr. 41–43), ~~die freie Klasse per Embedding zugeordnet, sonst `sonstiges`~~ → den Typ wählt die Klassifikation des Fakten-Agenten mit, `sonstiges` eingeschlossen (21.10.2026, [`novaberg-memory-fakten_e.md`](novaberg-memory-fakten_e.md) A Nr. 34) (`_k` §5, Punkt 3); **seit dem 25.10.2026 liefert die Klassifikation je Tripel den Typ des Subjekts im Feld `typ` und der Code prüft ihn gegen die Beziehung** (Code-Tree `47256bf`, ~~nicht committet~~ → committet als `a4997ac`; [`novaberg-memory-fakten_e.md`](novaberg-memory-fakten_e.md) A Nr. 46) — geschrieben wird er nicht, kein Typ-Fakt, deshalb bleibt F7 ⚫ |
| **Entity Resolution** | ~~🟢~~ → 🔴 (20.10.2026) | `memory/services/entity_resolution.py` `[Code]` · **26.10.2026:** `AUFLOESUNG-AUSFALL-WIRD-NEUE-ENTITAET` geschlossen (Archiv, [`novaberg-bugs-archiv-gedaechtnis.md`](novaberg-bugs-archiv-gedaechtnis.md)) — committet mit `26f89b1`, im Betrieb gemessen `[gemessen 25.10.2026]`: Mit erzeugtem Ausfall der Namenssuche legt der Magnet-Knoten keine Entität an und meldet je Name den Ausfall; gesund legt er an und findet beim zweiten Lauf dieselben. **Bleibt 🔴:** `MAGNET-RUECKFALL-BINDET-AEHNLICHEN-NAMEN` offen · **`MAGNET-RUECKFALL-BINDET-AEHNLICHEN-NAMEN` behoben im Tree, nicht committet (10:38 UTC; Suite `Ran 4939` OK) — offen seit 21.10.2026:** der Magnet-Pfad band einen ähnlichen Namen über den Rückfall auf Embeddings an eine fremde Entität · **`AUFLOESUNG-AUSFALL-WIRD-NEUE-ENTITAET` behoben, ~~nicht committet~~ → committet (00:57 UTC; Suite `Ran 4927` OK) — offen seit 20.10.2026:** ein Ausfall der Namens- oder Embedding-Suche geht als *kein Treffer* weiter und legt still eine neue Entität an (Magnet-Pfad des Kurzzeitgedächtnisses) | — |
| **Verbindungstabelle** (Turn ↔ KZG ↔ LZG) | 🟢 | **7.073 Zeilen** `[gemessen]` | Pixie-Turns erzeugen **keine** Brückenzeile (`PIXIE-TURN-ID-LEER`) |
| **Gesprächsarchiv** (`gespraech_archiv`) | 🔴 | **0 Zeilen, kein Writer** — **am 24.08.2026 nachgemessen, beides unverändert** `[gemessen]` | Tabelle existiert seit Chat 103 und ist nie gefüllt worden. **`GESPRAECH-ARCHIV-VERWAIST` steht im Backlog, nicht im Defektregister** — die Ampel ist trotzdem gedeckt (*es erzeugt etwas, das niemand liest*), aber nicht über eine Kennung des Registers, wie die Legende es verlangt |
| **Chronik** (vollständiges Turn-Log) | ⚫ | Konzept im Backlog, kein Code `[Code]` | alles |
### 3.2 Promotion und Verdichtung
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **Promotion KZG → LZG** (ohne Sprachmodell, P4 K3; bis 19.09.2026 *Zwei-Call-Promotion*) | 🟢 | `SynapsenPromotionAgent`, **29.129 Audit-Einträge** `[gemessen]` · **23.10.2026, gebaut und getestet** `[Code]`: Schritt 4 — der KZG-Hash wird nach einer gelungenen Neuanlage gelöscht, nach einem Treffer bleibt er bis zur TTL (Code-Tree `2d18b83`) —, und ein Treffer auf einen aktiven Knoten ist eine Dublette ohne Verstärkung (Code-Tree `5342a6a`); committet als `d11de95` und `782274c`, ~~im Betrieb nicht gemessen~~ → `[gemessen 23.10.2026]` im Betrieb an einem Prüf-Nutzer. Die Kennungen dazu (`KZG-EINTRAG-BLEIBT-NACH-PROMOTION`, `LZG-PROMOTION-TREFFER-VERSTAERKT`) ~~färben~~ → färbten *Synapsen-Modell*; seit der Messung im Archiv | ~~`PROMO-DROP1`, `PROMO-FAKT-LEER`, `PROMO-KZG-KEY-ALS-TURN-ID` offen~~ → `PROMO-DROP1` behoben (Archiv, 25.08.2026), `PROMO-FAKT-LEER` gegenstandslos (05.10.2026); **P4 abgeschlossen am 19.09.2026**: `KZG-ERSTELLT-AM-PARSE-HÄRTE` gebaut (unlesbarer Anlagezeitpunkt verworfen statt erfunden, `tests/test_promotion_erstellt_am.py` 4 Zeugen, Gegenprobe 4 rot `[Code]`); `SYNAPSEN-LIVE-VERIFY` abgenommen am 19.09.2026 (Entität 1.831/1.831, Timeline 4.137/4.137 verpflichtete Paare mit Kante, alle im Betrieb gebildet `[gemessen 19.09.2026, laufende DB]`); `SYNAPSEN-K8-SKALA` ungemessen |
| **KZG-Verdichter** | 🟠 | `[Code]` | `KZG-VERDICHTER-KONTEXT-VERLUST` — entkernte Inhalte |
| **Queue-Verfall** (Auftrag verliert seinen Anlass) | 🟢 | 1.036 Aufträge migriert, **6 Verfallsläufe** `[gemessen]` · `novaberg-queue-verfall_k.md` ✅ | Messung über 30 Tage Betrieb offen |
| **KZG-Salienz-Neubau** | 🟠 | Bauteil 1 gebaut und migriert `[Doku]` · `tests/test_salienz_formel.py` | **🟠 seit 24.08.2026** (zuvor 🔴): `KZG-SALIENZ-GESAETTIGT` behoben — der Eigen-Pfad ist auf [0,1] geschlossen, Kappung **21,3 % → 1,5 %**, verschiedene Werte 159 → 215, und die TTL-Staffelung trennt wieder (72/22/3 → 50/34/12). Dabei gefunden: `SALIENZ-RECHNET-AUF-IHREM-ERGEBNIS`, ebenfalls behoben. **Nicht 🟢, und der Grund ist der Bestand:** Er steht noch auf der alten Skala, der Wartungslauf ist vorbereitet und nicht ausgeführt (5894 umrechenbar, 1042 unangetastet). Dazu weiterhin **drei von sieben IDs offen** und der Pflicht-Pfad ungebremst — er wartet auf die Vermessung des Charakter-Rads. **09.09.2026: der zweite Skalenbruch derselben Formel ist behoben** — `ziel_gravitation` trat als unbeschraenkte Summe im `max()` an (bis **5,9955**, wo `sprachlich` bei 0,65 liegt) und gewann es in 214 von 721 Zeilen; seither ist der Term im **Erzeuger** auf [0, 1] normiert (`sin^0.5`, `GRAVITATIONSTERM_CAP` = 6,0 aus der gemessenen Spanne), `eigen_pfad` reicht bis **0,965** statt 4,097, gekappt **160 → 0**. `tests/test_gravitationsterm_normierung.py` (25 Zeugen, Gegenprobe 7/7); `GRAVITATIONSTERM-OHNE-OBERGRENZE` im Archiv |
| **Assoziatives / aktenbasiertes Retrieval** | ⚫ | kein Code `[Code]` | alles |
| **KZG-Liberalisierung + Cluster-Promotion** | 🔴 | Konzept vom 25.04.2026 traegt *„implementiert und getestet"*; der Pfad ist **seit Chat 98 deaktiviert**, die Konstanten `CLUSTER_MIN_EINTRAEGE`, `CLUSTER_THEMEN_SIMILARITY`, `CLUSTER_LZG_SIMILARITY` stehen weiter in `config.py` und wurden in Chat 107 sogar nachkalibriert. `CLUSTER_PROMOTION` hat **0 Aufrufer** im Baum `[Code]` | gebaut, abgeschaltet, und die Konstanten leben weiter — der Kommentar im Code sagt es selbst: *„Alt-Cluster-Pfad (deaktiviert seit Chat 98), trotzdem mitgezogen"*. Neu aufgenommen bei der Erhebung am 20.08.2026 |
---
## 4. Charakter
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **Fünf Charakter-Profile + Hash** | 🔴 | **11.09.2026: das Profil beschreibt die Art des Umgangs, keine Anredeform** (`F-PROFIL-1`, Entscheidung des Eigentuemers). Der Beziehungs-Prompt hatte die Anrede ausdruecklich verlangt und bekam sie; ueber `internal.character.relationship` ging sie in **jeden** Responder-Prompt zurueck. `[gemessen]` **Ein Vorkommen in 854 Zeichen Profil** stand hinter einer Eroeffnungsformel in **35 von 38** Antworten (92 %), am 09.09. **183 von 189**. Der Prompt fragt seither nach der Art der Naehe; `anrede_beanstanden` haelt jeden Profiltext gegen ein Anrede-Muster, Nulllinie **2 von 70** Profiltexten, kein Fehltreffer. 11 Zeugen, Gegenprobe 3/3. `[gemessen 18:00 UTC]` **Der Prompt traegt: 0 Anredeformen in 2 von 2** neu destillierten Profilen (vorher 2 von 2), ueber den echten Worker und ohne zu speichern. **🔴 bleibt**, weil der **Bestand** die Form weiter traegt: Die echte Destillation wird ausgehungert — `charakter_hash` stieg durch das Aging auf Prio **0,72** und verlor 31 Minuten lang jeden Zyklus gegen einen Shadow-Auftrag bei **0,99**. Alt: **34 Zeilen** in `charakter_hash` `[gemessen 19.08.2026]` · `novaberg-pixie-character-hash.md` · `[Code]` — `agents/charakter/` mit Destillation und `charakter_hash` | `CHAR-HASH-PAAR-VERTAUSCHT` offen — die Figur steht in der `user_id`-Spalte. **Neu:** `PROFIL-EINMALERHEBUNG` — die Profile werden einmal erhoben, die Räder daraus dreimal; derselbe Prompt streut über drei Läufe 16,5–24,5 %, der gespeicherte Lauf trug 42 % · **🔴 seit 20.08.2026** (zuvor 🟢): `PROFILPROMPT-OHNE-GESCHLECHT` **behoben 22.08.2026** und `PERSPEKTIVE-OHNE-DATIV` **behoben 22.08.2026** (alle vier Kasus plus Pronomen aus `_perspektive_aufloesen`, Genus aus `ASSISTANT_GENUS`; Zeuge `tests/test_traegerformen.py`, Suite 2101 gruen) · `KERNHASH-OHNE-PERSPEKTIVTRENNUNG` offen — **die Absicht ist seit dem 22.08.2026 entschieden** (der Kern beschreibt die Person, das Relationale gehoert ins Beziehungsprofil), gebaut ist nichts · `KERNHASH-LIEST-TURNWORTLAUT` **behoben** **geprueft 20.08.2026** (die Doku ist nachgezogen; dass 40 von 444 Zeilen zwei von zwanzig Bestandstagen decken, ist eine andere Frage) · **Neu 25.08.2026: `KERNHASH-TRAEGT-KEINE-PERSON`** — Novas sieben Kerne ähneln einander **nicht stärker** als die Profile sieben verschiedener Menschen: Überdeckung **16,0 % gegen 16,3 %** (Abstand −0,3 Punkte, Vorzeichen dreht), **ein** Inhaltswort von 641 steht in allen sieben, und das ist »geprägt« aus der Prompt-Schablone `[gemessen 25.08.2026, ohne Modell]`. Was im Kern steht, ist der Gesprächsstoff — 47 gemeinsame Inhaltswörter beider Kerne, darunter `kochen, zutaten, spiel, node`. **Ursache ist die Bauart:** `kern_hash_destillieren` bekommt den bestehenden Kern nicht, jeder Lauf überschreibt ihn aus den 40 neuesten Turns. **Die Absicht ist am 25.08.2026 entschieden** — die *Grundlage* wird fortgeschrieben, nicht der Text (`novaberg-pixie-character-hash.md` §3.1a); **das Auswahlkriterium ist offen, und bis es steht wird nicht gebaut.** **Die Perspektivtrennung hält dabei** — 0 wortgleiche Zitate zwischen beiden Kernen · **26.08.2026: das Auswahlkriterium steht, der Riegel ist weg** — festes Zeichenbudget beim **Vierfachen**, darin zeitlich geschichtet. `gewicht_absolut` ist ausgeschieden (Korrelation **−0,716** gegen die Zeit, im jüngsten Zeitblock σ 0,27), die Schichtung ist bei gleichem Budget nur **+8,0 %** wert, und die Kosten sind gemessen: eine volle Destillation aus zehn Calls dauert **261 s**, nicht die im Backlog behaupteten anderthalb Stunden `[gemessen 26.08.2026]`. **Der Eintrag ist damit baubereit** · **26.08.2026 gebaut, Ampel bleibt 🔴:** `_turns_laden` zieht über `geschichtet_waehlen` zeitlich gleichmäßig über die ganze Historie — am produktiven Paar **98 von 223 Begegnungen bei 75 783 von 80 000 Zeichen**, Material der Figur 15 521 → **68 652** Zeichen `[gemessen 26.08.2026]`. **Die Bindung des Kerns an den Wortschatz der 40 neuesten Begegnungen fällt über zwei Läufe von 28,4 % auf 15,8 % bzw. 10,8 % (Figur) und von 11,4 % auf 3,1 % bzw. 3,6 % (Mensch)**, voller Zyklus 261 s → rund 375 s bei Takt 600 s. Suite 2327 → **2341 grün**, Gegenprobe 3 rot. **Die zweite Kontrolle hat den Bau geändert** — die proportionale Kürzung ließ Budget liegen, ergänzt ist ein Auffüllen. · **26.08.2026, Rauschgrenze gemessen:** Zwei Destillationen aus **identischem** Material teilen nur **27–32 %** ihres Inhaltswortschatzes `[gemessen 26.08.2026]`. Damit hat die Rechnung hinter `KERNHASH-TRAEGT-KEINE-PERSON` eine Skala: 16,0 % gegen 16,3 % sind die **Hälfte des Wiederholbaren**, nicht ein Sechstel von hundert — der Befund hält. **Auf der Figurenseite ist die Wirkung damit belegt** (vorher 28,4 % liegt 14,7 Punkte über dem Rauschband), **auf der Menschenseite nur ein Hinweis** (11,4 % gegen eine Obergrenze von 8,7 %). · **Seit 26.08.2026 läuft die Drift-Reihe** — ein Sammler nimmt alle drei Stunden mit, was Pixie ohnehin destilliert und sonst überschreibt; die Auswertung trennt Rauschen von Wandern, indem sie die Überdeckung **innerhalb** eines Tages gegen die **zwischen** Tagen hält. Kein zusätzlicher Modellaufruf. **Lesbar ab zwei Tagen, belastbar erst über Wochen.** **Rot bleibt sie, weil das Schließkriterium nicht messbar ist** (`KERNVERGLEICH-KONTROLLE-STEHT-STILL` im Backlog, angelegt 26.08.2026)**:** Die sechs Vergleichspaare liegen mit ~30 Begegnungen unter dem Budget, ihre Auswahl ändert sich nicht — und `CHAR-HASH-PAAR-VERTAUSCHT`, `KERNHASH-OHNE-PERSPEKTIVTRENNUNG` und `PROFIL-EINMALERHEBUNG` stehen unverändert · **06.09.2026: der offene Kern-Prompt traegt einen Umfangs-Richtwert.** Der Prompt stand unveraendert, das Modell darunter nicht: **12.08.2026 nahmodell 3578 Zeichen — 06.09.2026 fernmodell 8587** (Figur) und **7381** (Mensch) `[gemessen 06.09.2026, laufende DB]`. Novas vier Profile zusammen **12 289 Zeichen**, ungefiltert im `[PERSON A]`-Block jedes Turns. Der Prompt nennt seither *rund 3000 Zeichen, hoechstens 4000* — **kein zurueckgekehrter Deckel**: Die Gegenprobe vom 11.08.2026 hatte die offene Fassung bei **3288 und 2545** Zeichen gemessen, der Richtwert holt den Text in genau dieses Band. »Nimm dir den Raum« und »Verdichte nicht« stehen unveraendert daneben, ihre Zeugen bleiben gruen. Zeuge `tests/test_kern_offen.py::test_der_umfang_traegt_einen_richtwert`, Suite **3156**, Gegenprobe 1 rot. **Die Wirkung ist nicht gemessen** — ob das Fernmodell den Richtwert haelt, zeigt erst die naechste Destillation. **Dabei drei Funde** (Fundliste 06.09.): zwei Rechtschreibniveaus im selben Lauf, eine Anrede aus 0,24 % der Quellen als *durchgehend*, und die Rueckkopplung des Profils auf den Zug, den es beschreibt · **06.09.2026: zwei davon sind Kennungen** — der Eigentuemer hat die Absichtsfrage entschieden (*die Verallgemeinerung ist nicht gewuenscht*), damit sind `PROFIL-VERALLGEMEINERT-EINZELBELEG` (mittel) und `PROFIL-VERSTAERKT-WAS-ES-BESCHREIBT` (hoch) offene Defekte statt Absichtsfragen. **Die Lizenz zur Verallgemeinerung steht woertlich im Kern-Prompt** (`destillation.py:387`), keine der neun Deutungsebenen verlangt ein Deckungsmass. Gebaut ist nichts, die Ampel bleibt 🔴 · **06.09.2026: der Prompt-Weg ist gemessen und ausgeschlossen** — vier Fassungen (Deckungsregel, Zaehlanweisung, Ausschnittbindung, das Wort *durchgehend* aus dem Pronomen-Satz) bewegen bei n = 20 nichts ueber die Streuung: Nulllinie **8 bis 10 von 20 Laeufen** mit Dauerwort, **11 Dauerwoerter** in beiden Runden. **Der Befund haelt dabei schaerfer als zuvor:** die Anrede steht in **1 von 20** Begegnungen, die der Prompt bekommt. Der Code steht unveraendert, der naechste Schritt ist eine Absicht (Ausgabe pruefen oder Material aendern) `[gemessen 06.09.2026, labor/2026-09-06_deckung_ergebnis.md]` · **06.09.2026: die Rueckkopplung waechst nicht** — `PROFIL-VERSTAERKT-WAS-ES-BESCHREIBT` von *hoch* auf *mittel* berichtigt. Ueber elf Tage Drift-Reihe (29 Mitschriften) faellt der Mechanik-Anteil in Novas Kern **16,2 → 14,6** je 1000 Woerter statt zu steigen, bei Tagesstreuung 11,4–21,5. Belegt ist ein **Pegel**: vier- bis siebenmal so dicht wie im Profil des Menschen `[gemessen 06.09.2026, ohne Modell]` · **06.09.2026: die Deckungspruefung steht an der Ausgabe** — `deckung_beanstanden` haelt jeden woertlichen Beleg gegen den Prompt und meldet *Beleg ohne Fundstelle* (0 Vorkommen) und *Einzelbeleg als Dauerzug* (1 Vorkommen neben einem Dauerwort); gemeldet, nicht verworfen, fuer alle fuenf Profile. `[gemessen]` 20 echte Beziehungsprofile: **3 Laeufe mit Beanstandung**, 6 % der Zitate; Vorlauf 4 von 20. 10 Zeugen, Gegenprobe 5 rot, Suite **3191**, harte Wand 0. Zwei Grenzen: ein Dauerwort ohne Beleg ist nicht pruefbar, der Anschlag im vollen Betriebspfad steht aus · **06.09.2026: Anschlag im Betrieb belegt** (4 Meldungen bei 10 Profilen) · **06.09.2026: die `ZITATREGEL` steht in allen fuenf Prompts** — Setzung `F-ZITAT-1` *nichts zitieren, was nicht gesagt wurde*; unbelegte Zitate **24 % → 10 %** und **21 % → 9 %** bei n = 20 je Fassung, dazu Normalisierung vor dem Vergleich. **Rund ein Zehntel bleibt** — die Entwertung im gespeicherten Text ist offen `[gemessen 06.09.2026]` · **06.09.2026, Betriebsbeleg:** Der Zyklus um 17:11 UTC meldete viermal, darunter 8 von 22 und 9 von 31 Zitaten ohne Fundstelle. **Die Laborzahlen galten fuer ein anderes Ziel** — die Werkzeuge massen ohne das Anbieter-Pinning des Betriebs. **Gepinnt wiederholt: 18 % → 16 %**, also **keine Wirkung**; die Zitatregel bleibt stehen, der Prompt-Weg ist ausgeschieden. Offen bleibt allein die Entwertung im gespeicherten Text `[gemessen 06.09.2026]` · **06.09.2026: die Entwertung ist gebaut** — `zitate_entwerten` nimmt einem Beleg **ohne Fundstelle** die Anfuehrungszeichen, der Satz bleibt; der *Einzelbeleg als Dauerzug* behaelt sie, weil sein Wortlaut im Material steht. `[gemessen]` an **20 gepinnten Kern-Destillationen**: **32 von 282 Zitaten entwertet** in 14 von 20 Laeufen, danach **0** ohne Fundstelle; **kein gedecktes Zitat verloren** (250 gezaehlt, 250 erwartet) und **64 Zeichen** angefasst, genau zwei je Beleg. 18 Zeugen, Gegenprobe zweimal mit getroffener Vorhersage (10 rot ohne Eingriff, 3 rot ohne Grenze), Suite **3220**, harte Wand 0. **Die Gegenprobe hat zwei Zeugen erzwungen** — drei der vier Grenz-Zeugen erreichten den Eingriff wegen des fruehen Rueckkehrpfads gar nicht. **Der Anschlag im Betriebspfad ist am 06.09.2026, 19:42 UTC belegt** — ein Messturn setzte `hash_dirty`, der Heartbeat destillierte (`hintergrund_log` 52306/52307), **4 Belege gemeldet und dieselben 4 entwertet**; im **gespeicherten** Kern stehen sie ohne Anfuehrungszeichen und die uebrigen 20 Zitate mit (4 von 24 ungedeckt, 17 %). Alle vier sind Stilmittel, keine erfundenen Redewiedergaben. **Offen bleibt allein die 60-Zeichen-Grenze** von `ZITAT`: 8 von 125 Anfuehrungspaaren im Bestand liegen darueber, allesamt ganze Saetze im Kern |
| **Sprachadaption (CAT)** | 🔴 | `novaberg-ei-language-adaptation.md` `[Doku]` | `SPRACH-STIL-DEFENSIV-STUMM` offen · **🔴 seit 20.08.2026** (zuvor 🟢): `SPRACHSTIL-ZWEI-VERFAHREN-UNEINIG` offen |
| **Charakter-Räder als Messreihe** | 🔴 | **286 Messungen** in `charakter_rad_messung` `[gemessen 23.08.2026]` · beide Räder · `[Code]` · `tests/test_speichen_median.py` — Tabelle `charakter_rad_messung`, Spiegelung der beiden Raeder eines Paares als SQL-Abfrage | `RAD-WERT-AUF-SPALTEN-DEFAULT`, `RADSPEICHEN-MESSEN-PROFILTEXT` offen; `RAD-GESPEICHERT-NICHT-REPRODUZIERBAR` gegenstandslos und `RAD-MEDIAN-SCHUETZT-FALSCHE-QUELLE` behoben (05.10.2026, Archiv). **06.09.2026: die Herkunftsangabe nennt den Sprecher** — `antwortendes_modell("background_sprache")` statt der Konstante `PIXIE_ANALYSE_MODEL`. **24 Erhebungen** zwischen dem 05.09. 18:28 und dem 06.09. 08:05 UTC trugen `qwen36-cpu`, obwohl DeepSeek antwortete `[gemessen 06.09.2026]`; der Bestand ist am selben Tag **berichtigt** (24 Zeilen, nach Freigabe; die Zeitfenster ueberlappen seither nicht). Dabei ein zweiter, folgenloser Fehler: das Feld nannte das *Analyse*-Modell, waehrend beide Raeder ueber `_llm_call` mit `modus="sprache"` laufen. **37 % des Zugbudgets** liegen auf Speichen ohne Trennschärfe zwischen den Paaren, der Faktor erreicht deshalb über 88 Messungen nur 0,864–1,443 statt 0,5–1,5 `[gemessen 19.08.2026]` · **🔴 seit 20.08.2026** (zuvor 🟢). `SPEICHENWERT-NICHT-MEDIAN` ist am 23.08.2026 behoben — beide Räder tragen `speichen_median` neben dem Rad des Median-Laufs. **Die Nachmessung über alle 95 Erhebungen korrigierte den Befund:** Initiative 10,0 %, Zuwendung **13,7 %** — das Rad, das aus drei Läufen unbetroffen schien, ist stärker betroffen · **Neu 25.08.2026, und es trifft beide Räder an der Wurzel:** `rad_quelle` ist `kern + beziehungsprofil` (`agent.py:300`) — beide Räder lesen also den Kern-Hash, und der trägt nach `KERNHASH-TRAEGT-KEINE-PERSON` keine wiedererkennbare Person `[gemessen 25.08.2026]`. **Solange das gilt, messen Zuwendungs- und Initiative-Rad den Gesprächsstoff, nicht die Haltung** — der Befund liegt damit unter `RADSPEICHEN-MESSEN-PROFILTEXT`, nicht daneben: Dort liest die Bewertung ein Wort statt einer Handlung, hier trägt schon die Quelle keine Person** · **Neu 26.08.2026: `RAD-MEDIAN-SCHUETZT-FALSCHE-QUELLE`** — die drei Rad-Läufe der Festlegung `F-RAD-2` lesen **alle denselben Kern**, und dessen Neuziehung bewegt den Faktor um **0,2908** gegen **0,0550** innerhalb eines Kerns `[gemessen 26.08.2026, Material und Beziehungsprofil festgehalten]`. Das ist das **5,3-fache** und **29 % der ganzen Skala** 0,5–1,5. **Die einzige gespeicherte Verlässlichkeitsangabe des Faktors ist damit um etwa Faktor fünf zu klein** — und der Faktor geht in die Salienz jedes Nutzerbeitrags ein. Beantwortet zugleich eine seit dem 30.07.2026 offene Frage: Der Profiltext muss sich für diese Drift **nicht** ändern · **26.08.2026 gebaut und gemessen: der Kern-Medoid trägt nicht.** `kern_hash_mehrfach_destillieren` erhebt den Kern mehrfach und speichert den zentralsten Lauf; jeder Lauf steht als `kern_erhebung` im `pipeline_log`. **Aber die Spanne des Zuwendungsfaktors fällt nur von 0,2908 auf 0,2615 — bei dreifacher Rechenzeit** `[gemessen 26.08.2026]`, bei vier Punkten je Reihe nicht von Rauschen zu unterscheiden. `PIXIE_CHARAKTER_KERN_LAEUFE` steht auf **1**, der Mechanismus bleibt. **Ein Weg ist damit geprüft und ausgeschlossen**, der Eintrag bleibt offen · **26.08.2026: die Ursache ist gefunden und es war eine Konstante.** Der Knoten `charakter_hash` lief mit `temperature = 0.2` ohne belegte Herleitung; vier Läufe auf demselben Material überdecken sich dort zu **32,9 %**, bei **0,0** sind sie **zeichengleich** `[gemessen 26.08.2026]`. Die Temperatur steht seither auf 0,0. **Damit fällt die Ursache von `RAD-MEDIAN-SCHUETZT-FALSCHE-QUELLE`**, und die Rechnung hinter `KERNHASH-TRAEGT-KEINE-PERSON` ist zu wiederholen — ihre Decke lag bei 32 % und liegt jetzt bei 100 %. **Nebenwirkung, gemessen:** Drei Rad-Läufe liefern bei 0,0 dreimal 1,2977, Spanne 0,0000 — `F-RAD-2` ist gegenstandslos geworden und trägt seither ihre Bedingung · **27.08.2026: die Rechnung ist wiederholt, der Befund hält.** Alle vierzehn Kerne frisch destilliert: Novas sieben untereinander **19,7 %**, sieben verschiedene Menschen **16,2 %** — Abstand **+3,5 Punkte** gegen −0,3 am 25.08. `[gemessen 27.08.2026]`. **Gepaart je Korpuspaar** (weil die Ähnlichkeit dem Gespräch folgt: `hartmut ↔ konrad` steht in beiden Gruppen oben) liegt Novas Wert in **15 von 21** Paaren höher, **p = 0,078** — knapp über der Schwelle, kein Nachweis. **Die Kopplung der Paare arbeitet dagegen**, der wahre p-Wert liegt darüber. Der Eintrag ist damit **entschieden und negativ** statt unentscheidbar |
| **CharakterIdentitätsAgent** (Saatgut) | ~~🟢~~ → ~~🔴 (24.10.2026)~~ → ~~🟠 (26.10.2026)~~ → 🔴 (06.11.2026) | **06.11.2026, offen:** `CHARAKTER-LOESCHEN-OHNE-ZIEL-TRIFFT-ALLE` (hoch) — ein `delete` ohne Kennung fragt nach *alle*, ein *„ja“* deaktiviert jede Anweisung `[Code]`; `KLASSIFIKATION-UNBEKANNTE-AKTION-WIRD-READ` (niedrig) `[Code]`; **🟠 → 🔴** · **26.10.2026, später — die Antwort des Modells wird geprüft gelesen** `[Code]`, Code-Tree `9c1df7a` (Kennung wird nachgetragen → committet als `b03db21`, die Doku dazu als `de16bea`): `agents/charakter_identitaet/klassifikation.py::_read_answer`/`_read_text_fields` — `null` wie ein fehlender Schlüssel, ein Feld falschen Typs (`feld_falscher_typ`) und eine Antwort ohne Objekt (`kein_objekt`) enden laut in `klassifizieren` statt mit `TypeError` im Dispatch; Zeugen `tests/test_classification_null_field.py` (Untergrenze 7 Zugriffe), Server-Suite `Ran 5503 tests` · `OK (expected failures=2)`; vor dem Commit am Modell 54 von 54 Bitten ohne Ausfall, vorher 50 `[gemessen 25.10.2026]`; `KLASSIFIKATION-NULL-FELD-WIRFT` geschlossen (Archiv, [`novaberg-bugs-archiv-bauart.md`](novaberg-bugs-archiv-bauart.md)); im Betrieb nicht gemessen · **26.10.2026, 🔴 → 🟠: keine offene Kennung zeigt mehr darauf.** `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG` und `DIREKTIVEN-KENNUNG-UNGEPRUEFT` sind geschlossen (Archiv, [`novaberg-bugs-archiv-charakter.md`](novaberg-bugs-archiv-charakter.md)), nach der Messung im Betrieb über den echten Weg an `direktiven` und `notizen` `[gemessen 26.10.2026]`. **Dieser Dienst ist im Betrieb nicht gemessen:** Die Deutung der Antwort und die Prüfung der Kennung tragen hier Zeugen und die Messungen vor dem Commit (305 ungezeigte Antworten, 0 Fehlausführungen; 54 Bitten am Modell durch beide Dienste, 0 Werte ungeprüft) `[Code]`; 🟢 erst mit der Messung im Betrieb · **25.10.2026, Kennung geprüft gelesen und an den Menschen gebunden, behoben im Code-Tree `2876b85`** `[Code]` (~~nicht committet~~ → committet als `236edec`), **offen bis zur MESSUNG im Betrieb:** `klassifikation.py::_read_target_id` liest `target_id` nur als Ganzzahl größer 0 oder als Schreibweise der Liste (*„13“*, *„[13]“*), jeder andere Wert endet laut (`kennung_unlesbar`); `crud.py` nimmt eine Kennung nur für eine Zeile dieses Menschen im passenden Zustand an, `user_id` steht in der Bedingung von Lesen und Schreiben, ein Schreibweg ohne getroffene Zeile endet laut (`keine_zeile`); Zeugen in `server/tests/test_target_id_ownership.py`; Server-Suite `Ran 5421 tests` · `OK (expected failures=2)` `[Code]`; vor dem Commit am Modell 54 Bitten durch beide Dienste: 0 Werte ungeprüft weitergegeben, 34 von 34 gelesenen Kennungen gleich der gemeinten, `"[n]"` 12 mal `[gemessen 25.10.2026]` — `DIREKTIVEN-KENNUNG-UNGEPRUEFT` bleibt offen, **keine Ampel wechselt** · **24.10.2026, behoben im Code-Tree `f901e08`** `[Code]` (Kennung wird nachgetragen → committet als `e1e0724`, die Doku dazu als `d2d6ec8`), **offen bis zur MESSUNG im Betrieb:** `agents/charakter_identitaet/resume.py::_standard_interpretieren` führt eine Antwort nur aus, wenn sie aus Zustimmung besteht — Wörter (Zustimmungs- und Füllwörter, *na*, *nun*, *also* nie), Zeichen (`DROPPED_SIGNS`) und Wortstellung (`ASKING_VERBS` vor `SUBJECT_WORDS`) geschlossen, die Ablehnung zuerst; *„Wie bitte?“* deaktiviert auf *„… loeschen (alle)“* nichts mehr; Zeugen `ClosedConsentTest`, `ClosedSignsTest`, `RefusalFirstTest`, `ExcludedWordsTest`, `WordOrderTest`, `ClauseSeparatorsTest` in `tests/agents/charakter_identitaet/test_resume.py`; Server-Suite `Ran 5394 tests` · `OK (expected failures=2)`; vor dem Commit an 305 ungezeigten Antworten 0 Fehlausführungen, Nachprobe der Wortstellung 14 von 14 unklar `[gemessen 24.10.2026]` · **🟢 → 🔴 am 24.10.2026** (der Stand davor): eine offene Kennung zeigt darauf — `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG` (hoch): Auf die Pflicht-Rückfrage gilt *„Wie bitte?“* als Zustimmung, und auf *„Soll ich das ausfuehren? Charakter-Anweisung loeschen (alle)“* werden alle aktiven Charakter-Anweisungen deaktiviert; `agents/charakter_identitaet/resume.py::_standard_interpretieren` kennt keine Zurückhaltung `[Code]`. Auf denselben Dienst zeigt seit dem 20.10.2026 auch `ABLEHNUNG-OHNE-STAMM-BESTAETIGT` (mittel); belegt war er bis heute nur an der Zeile *Rückfrage-Kette* · `[Code]` · 1 Zeile in `charakter_anweisungen` `[gemessen]` · seit Tree `9153022` (18.10.2026) bestätigt *„ja, gerne“* die Pflicht-Rückfrage, *gerne* und *meinetwegen* lehnen nicht mehr ab `[gemessen 18.10.2026]` | ~~`CRUD-REACTIVATE-STAMP`, `CHAR-ID4-ORPHAN` offen~~ → beide gegenstandslos seit 25.08.2026 (`novaberg-bugs-archiv-charakter.md`, nachgesehen am 18.10.2026) · `ZUSTIMMUNG-GILT-ALS-ABLEHNUNG` ✅ behoben 18.10.2026 · **offen seit dem 24.10.2026:** die Deutung der Antwort (`ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG`; ~~`ABLEHNUNG-OHNE-STAMM-BESTAETIGT`~~ → geschlossen am 25.10.2026, Zeugen `ClosedConsentTest`; im Betrieb nicht gemessen) · dazu `DIREKTIVEN-KENNUNG-UNGEPRUEFT` (hoch, 25.10.2026) auch hier, am Code gelesen: `agents/charakter_identitaet/klassifikation.py` übernimmt die Kennung der Modellausgabe ungeprüft, die Schreibwege binden nicht an `user_id` `[Code]` · **26.10.2026:** beide Kennungen geschlossen; offen sind die Messung im Betrieb an diesem Dienst und zwei Funde vom 25.10.2026 (Löschen ohne Ziel fragt nach *alle*; `"anweisung": null` wirft `TypeError`) → **06.11.2026:** Das Löschen ohne Ziel trägt seine Kennung, `"anweisung": null` ist mit `KLASSIFIKATION-NULL-FELD-WIRFT` geschlossen |
| **Charakter-Resonanz — Bauteil 1a/1b** (Brücke) | 🟢 | `verbindung` **7.073 Zeilen** `[gemessen]` | — |
| **Charakter-Resonanz — Bauteil 2** (Backfill) | ⚫ | optional, nicht gebaut `[Code]` | alles |
| **Charakter-Resonanz — Bauteil 3** (`verhaltensweisen` + Verdichter) | ⚫ | **Tabelle existiert nicht** `[gemessen]` | der ganze Bauteil; die Brücke füllt sich seit Wochen für einen Verbraucher, den es nicht gibt |
| **Charakter-Resonanz — Bauteil 4** (Lesepfad) | 🟠 | CharakterAgent liest `verbindung` `[Code]` — aber **anders als geplant** | liest Turn-Wortlaut statt destillierter Verhaltensweisen |
| **Charakter-Resonanz — Bauteil 5** (Doku) | ⚫ | — · `[Doku]` — der Bauteil ist die Dokumentation selbst; ohne Code kein Codebeleg moeglich | nach 1–4 |
| **Charakterbildungs-Messreihe** (18 Bögen, 540 Turns) | 🟠 | aufgesetzt und zurückgesetzt `[Doku]` | wartet auf die GPU |
| **Profil-Historie** | ⚫ | `PROFIL-HISTORIE-FEHLT` `[Doku]` | alles |
---
## 5. Gesprächsvektor, Lage und Haltung
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **GV1 + GV2** (Farbmischung, Landschaft) | 🔴 | `graph/nodes/gespraechsvektor.py` `[Code]` | `GV-HYPOTHESE-ROHE-AUSGABE`, `GV-PANEL-STRATEGIE-DOPPELT` offen · **🔴 seit 20.08.2026** (zuvor 🟢): `GESPRAECHSVEKTOR-HYPOTHESE-DREIFACH` offen · **`GV-FARBTON-SUBJEKTWECHSEL` behoben am 10.09.2026** — die Absichtsfrage entschieden (der Farbton beschreibt den Raum aus **beiden** Seiten), `_farbe_intent` und `_farbe_dynamik` lesen seither `internal` **und** `external`, die Namen richten sich nach dem Leser. 22 Zeugen (`tests/test_farbton_raum.py`, der erste Pruefstand fuer S17 ueberhaupt), Gegenproben 2/2, 8/8 und 3/3, Betriebsbeleg. `[gemessen ueber 1348 Turns]` **711 Saetze** im Bestand behaupteten eine Nutzerhaltung aus Novas Werten. **Rest benannt:** drei weitere Farben messen den Raum weiter aus einer Seite |
| **14 Gesprächslandschaften** | 🟢 | `novaberg-gv-strategie_k.md` `[Doku]` · `[Code]` — `CLUSTER_BESCHREIBUNGEN` in `ei/dreischicht.py`, **14 Eintraege gezaehlt** am 20.08.2026 `[Erhebung 20.08.2026]` | — |
| **Erreichbarkeit der Landschaften** | 🟠 | ~~alle vierzehn erreichbar gemessen~~ → **genauer, Herkunft 08.08.2026** (`novaberg-erreichbarkeit_m.md` §4b): *„Für die zwölf Bögen sind alle vierzehn belegt.“* — **beim produktiven Paar tragen vier null** (`gewitter`, `schmollen`, `nebel`, `regen`; n = 107) `[Doku, Erhebung 08.08.2026]` · **B1 ist gebaut, am 08.08.2026** `[Code]`: Die Landschaftsvermessung steht vor beiden Toren des GV-Nodes, und die vier Marken `VORAUSDENKEN_*` in `graph/nodes/gespraechsvektor.py` benennen den Ausfall des Vorausdenkens statt ihn zu verschweigen; 12 Zeugen in `tests/test_gv_landschaft_immer.py` | ~~**Ablesung fällt in 14 % aus** — kein Code für die Abhilfe~~ → **Überholt, Herkunft 08.08.2026** (`novaberg-erreichbarkeit_m.md` §4a): Der Nenner war doppelt; der Ausfall lag bei **101 von 360 (28,1 %)** in den zwölf Bögen und **184 von 845 (21,8 %)** über alle Rohturns, und er hing an der Nähe-Achse (`distanz` 82 von 164, `neutral` 0 von 340). Nach dem Bau **845 von 845 mit Landschaft, 0 ohne** (`novaberg-erreichbarkeit_b.md` B1). **Rest:** `novaberg-erreichbarkeit_b.md` §7 führt B1, B2 und B3 mit Abschlussvermerk; **B4 und B5 tragen keinen** — bei B4 ist nur die Voraussetzung gebaut (die sechs Achsen werden seit dem 08.08.2026 je Turn mitgeschrieben, justiert ist nichts), B5 ist die Zusicherung über die Charakter-Spanne. Und die vier produktiv unbetretenen Landschaften sind auf dem reparierten Gerät nicht neu erhoben |
| **Initiative-Achse** | 🔴 | `ei/initiative.py`, `GV_INITIATIVE_SCHWELLE = −0,05` in `config.py` `[Code]` · ~~Schwelle gegen Zeugen kalibriert~~ → **Überholt, Herkunft 31.07.2026** (`novaberg-gv-initiative_m.md` §12.7): Die Positions-Kontrolle des Kalibrierlaufs zog `paare[:30]` und maß damit die älteste Ecke des Korpus. Gestreut und über den Vollkorpus (125 Paare) trennt der Zeuge die Sprecher um **13,6 Punkte** gegen die geforderten 20 — *„Das Tor hält auf ordentlicher Grundlage nicht.“* Die Konstante bleibt stehen, weil ihr Vorgänger −0,45 gemessen schlechter war, ist aber **nicht mehr belegt** `[Doku, Herkunft 31.07.2026]` | `initiative_berechnen` in `ei/dreischicht.py` hat **keinen Produktivaufrufer** `[gemessen]` · **🔴 seit 20.08.2026** (zuvor 🟢): `INITIATIVE-DOPPELT-BELEGT` offen · **Die Schwelle kann nicht neu erhoben werden, solange das Tor nicht hält** — damit steht auch der Kalibrier-Agent still (`novaberg-gv-initiative_m.md` §12.7, *Offen*) |
| **Kalibrierverfahren** (sechs Klassen, Korridor) | 🟠 | `ei/kalibrierung.py` + `agents/kalibrierung/` als Messwerkzeug `[Code]` | **kein Erwartungskorridor geschrieben, keine Validierungsmenge erhoben** |
| **GV4 — Wissenslücken im Prompt** | 🔴 | **08.11.2026: fällt eine Quelle oder die Einbettung aus, steht ein Fehler in Log und Pipeline-Protokoll, und *keine Knoten* meldet nur ein Lauf ohne Ausfall** — `ei/wissensluecken.py`, Code-Tree `9ef9a4e`, Kennung wird nachgetragen; 40 Zeugen `tests/test_gv4_source_outage.py`, Server-Suite am Tree `f121c55` `Ran 5662 tests` · `OK (expected failures=2)` `[Code]` · vor dem Commit gegen eine Wegwerf-Datenbank gemessen: gesund 0, LZG aus 1, Redis aus 1, wieder gesund 0 Einträge, kein Turn endete; die andere Quelle zählt nur bei warmem Zwischenspeicher der Gewichte, beim echten Datenbankausfall steht der Fehler nur im Log `[gemessen 07.11.2026]`; `GV4-QUELLEN-SILENT-SKIP` geschlossen (Archiv, [`novaberg-bugs-archiv-antwortpfad.md`](novaberg-bugs-archiv-antwortpfad.md)), er zeigte bis dahin nicht auf diese Zeile; bleibt 🔴 mit `WISSENSLUECKEN-FELDER-LEER` · **12.09.2026, 21:47 UTC — Wissensfragen am Rad entschieden** (Entscheidung des Eigentümers, `F-GV-2` Nachtrag): Pflicht zuerst, außer `wissbegier` liegt im Zuwendungsrad um mehr als 0,05 über `pflicht`. Im Betrieb protokolliert: Wissensfrage beim produktiven Paar `neugier_hat_anlass` (0,7607 / 0,8873), Aufgabe `aufgabe`. Suite **3586 grün, 0 übersprungen**, Gegenproben 1/1, 6/6, 2/2. **12.09.2026, 21:26 UTC — Bauteil 4 von 4 gebaut: die Bitte zuerst.** `graph/reiz.py::is_request`, `[BITTE]`-Block im GV-Prompt, Vorgabe im Verfasser (in dessen Namen, Person A/B). Gemessen in 14 Messturns: Die Vorgabe kommt bei `task` in GV und Verfasser an (2 von 2 in der Endfassung); **ein Gewinn war nicht messbar**, weil Nova in beiden Nulllinien schon zuerst lieferte. Nur 3 von 12 Mess-Bitten trugen `task`. Suite **3572 grün, 0 übersprungen**, Gegenproben 4/4, 1/1, 2/2. **🔴 bleibt** wegen der Plausibilität der Lücken (etwa die Hälfte). **12.09.2026, 20:53 UTC — Bauteil 3 von 4 gebaut: Themen statt Sätze, die Lücke beim Nutzer.** `ei/gap_topics.py`, Stapelweg im Embed-Worker. Durch den gebauten Pfad über 31 Turns: **34 Lücken, 0 davon Vermerke über Novas Äußerungen** (vorher 56 von 83), LZG 13 / KZG 21, Laufzeit 404 ms kalt / 187 ms warm. Resonanz auf dem Thema, Schwelle 0,15. Suite **3561 grün, 0 übersprungen**; 16 bestehende Zeugen vorhergesagt rot und umgezogen, Gegenproben 2/2, 3/3, 1/1, 1/1. **🔴 bleibt:** Plausibilität nach Lesung etwa die Hälfte (Fundliste). **12.09.2026, 20:31 UTC — Bauteil 2 von 4 gebaut: Novas offene Fragen nach Nähe zum Reiz.** Grenze `OFFENE_FRAGEN_MIN_NAEHE = 0.49`, geeicht je Nähe-Band (erste Eichung auf 0,41 verworfen). Gemessen: 0 Fragen in 11 Nutzerturns des Abends, 4 passende in den Impulsen; unabhängige Stichprobe 17 von 60 Turns mit Fragen, 33 von 38 passend nach Lesung. Suite **3527 grün, 0 übersprungen**, Gegenprobe 1/1 und 1/1. **12.09.2026, 20:20 UTC — Bauteil 1 von 4 (`F-GV-2`) gebaut: die Quellen-Naht.** Das Gewicht geht als Rang in der eigenen Quelle ein (`ei/source_weights.py`); nachgemessen durch den gebauten Pfad ueber elf echte Reize **16 LZG / 19 KZG** statt 77 / 6. Suite **3515 gruen, 0 uebersprungen**, 24 neue Zeugen, Gegenprobe 3 vorhergesagt / 3 gezaehlt. **🔴 bleibt:** Der Anteil der Vermerke ueber Novas eigene Aeusserungen ist unveraendert (24 von 35) — das behebt erst der Umbau auf Themen. **12.09.2026 abends von 🟢 herabgestuft — eingefuegt wird, aber keine Luecken.** `[gemessen ueber 15 Betriebsturns, 18:15–18:52 UTC]` Luecken im Prompt in **11 von 11** Nutzerturns (je 8, einmal 3) und **0 von 4** Impuls-Turns (`user_prompt leer`). Von **83** Luecken beginnen **56** mit *Nova …* (Vermerke ueber eigene Aeusserungen), 14 mit *Der Nutzer …*, 13 sind Sachsaetze, meist Recherche-Berichte — der Zweck *„eine Wissensluecke beim User"* (`novaberg-gv-strategie_k.md` §4.3) wird nicht erreicht. **6 von 83** kommen aus dem KZG, weil LZG-Gewicht und KZG-Salienz verschiedene Skalen im selben Produkt sind. Die Aufnahmebereitschaft liegt in 14 von 15 Turns bei 0,82–0,99. Befunde in `novaberg-fundliste.md` (12.09.2026), Beleg `labor/profil/2026-09-12_neugier_abendturns_ergebnis.md`. Alt: `ei/wissensluecken.py`, Lücken werden eingefügt `[Code]` | `WISSENSLUECKEN-FELDER-LEER` offen; Sprecher-Befund der Resonanz (Fundliste 12.09.2026) |
| **Wissenslücken-Speicher** | 🔴 | ~~785 Zeilen~~ → **1745 Zeilen, ausnahmslos `offen`** `[gemessen 07.09.2026]` — der aelteste vom 27.07.2026, der juengste von heute: **in 42 Tagen ist keine einzige Luecke geschlossen worden**, und der Bestand hat sich mehr als verdoppelt. ⏫ **Band A seit 07.09.2026** | ~~kein Verbraucher; `geschlossen`/`ausgeschlossen` sind Statuswerte **ohne Schreiber**~~ → **gegen den Code gehalten am 13.10.2026:** Leser `memory/repositories/wissensluecken_repository.py::staerkste_luecken` → `[OFFENE FRAGEN]` seit dem 09.09.2026; Schreiber fuer `geschlossen` `agents/wissensluecken/agent.py::_bekannte_schliessen` seit dem 12.09.2026, nur bei woertlichem Treffer in `lzg_knoten.themen`; `ausgeschlossen` weiter ohne Schreiber, kein Verfall. `[gemessen 13.10.2026]` **2.832 Luecken, 138 geschlossen** (127 davon in der Woche ab 07.09.), alle mit Herkunft `nachbar`; seit dem 03.10. kein Zuwachs (Pixie pausiert). GV4 rechnet parallel und liest die Tabelle nie · **15.10.2026: der Aufgriff ist messbar.** `staerkste_luecken` liefert die `id`, der Gesprächsvektor reicht die Kennungen der angebotenen Fragen weiter (`offene_fragen_ids`, auch in `strategie_tor`), und der Knoten `aufgriff` hinter der Auslieferung schreibt je Turn einen Eintrag `offene_fragen_aufgriff` mit einem von vier Ausgängen; Maß ist die Nähe der eingebetteten Antwort zum Thema, Schwelle `TAKE_UP_MIN_PROXIMITY` 0,55, **ungeeicht** `[Code]` · 26 Zeugen (`tests/test_offene_fragen_aufgriff.py`). **Nulllinie** `[gemessen 15.10.2026]`: 321 Turns ab dem 10.09., in 35 eine Frage angeboten (33 in der Woche ab dem 07.09.), danach 2 von 142. Ob Nova eine aufgreift, ist im Betrieb noch nicht gemessen (`novaberg-wissensluecken_t.md` §5) |
| **Haltungsraum — Rechnung, Knoten, Protokoll, Stand** | 🟢 | `ei/raum.py`, `graph/nodes/haltung.py`, `memory/haltung.py` `[Code]` | **🟢 seit 23.08.2026** (zuvor 🔴): `HALTUNGSSTAND-OHNE-LOGZEILE` als entschieden geschlossen — zwei Speicher, zwei Gegenstaende; die Entscheidung steht seit dem 15.08.2026 im Docstring und war damit schon bei Aufnahme des Eintrags benannt |
| **Haltungsraum — Prompt-Block** | 🔴 | gebaut am 13.08. (`_sprachstil_block`) `[Code]`, aber **gemessen ohne Bindung**: Streuung 2,68 bei identischer Vorgabe `[Doku, Messung 17.08.]` · seit 20.08. **drei Einflüsse statt einem** — Raum, halbierte Korridore, Länge der Äußerung bei rein leichten Intentionen `[Code]` | die Zahl regiert das Modell nicht; die Struktur, die binden würde, ist die Gedankenkette (§6). ~~**Die Wirkung der Halbierung im Betrieb ist ungemessen**~~ → **am 07.09.2026 gemessen: sie hat gewirkt** (`Ist/Obergrenze` 6,25 → 1,54) · **07.09.2026, 21:24 UTC: die Pruefform ist gefahren, und sie beantwortet die Frage dieses Eintrags.** 16 Turns mit und ohne Block: Der Unterschied **zwischen** den Armen betraegt Faktor **1,47**, die Streuung **innerhalb** eines Arms **3,38 bis 6,03** — *der Regler bewegt weniger, als er zittert*. Er wirkt (6 von 8 Paaren, Ueberhang 2,00 → 1,39) und ist bei n = 8 nicht abgesichert (p = 0,289). **Keine der 16 Antworten unter der Untergrenze.** Damit ist es eine Bauform-Frage, keine Zahlenfrage · **07.09.2026: dieser Eintrag ist die Wurzel von dreien.** Die Streuung bei identischer Vorgabe (**2,68**) ist groesser als die Spanne der Vorgabe selbst (**1,50**) — *der Regler ist kein Regler, sondern eine Tendenz*. Solange das gilt, ist jede Groesse, die den Regler moduliert, ohne belegbare Wirkung: der Massblock (`MASSBLOCK-IM-BETRIEB-UNGEMESSEN`), die halbierten Korridore und seit heute der **Faszinations-Leser**. **Die Pruefform steht seit dem 20.08.2026 zweimal im Backlog und ist nie gefahren worden:** dieselbe Turnreihe mit und ohne Block, Ist-Laenge gegen Korridor. ⏫ **Band A seit 07.09.2026** |
| **Haltungsraum — der zweite Leser (Verfasser)** | 🟡 | Block `[MASS]` mit Menge, Rückfrage und Vorschlag; `umfang`, `fragen`, `draengen` gehen an den Verfasser, `naehe` und `waerme` bleiben beim Responder. 10 Zeugen, Gegenprobe 5/5 `[Code]`. **28.08.2026 abends: die Rückfrage-Zeile trägt ihren Gegenstand aus der Sachlage** (Scheibe 3 des Lage-Konzepts; Labor 4/4 gegen 1/4, Betrieb 21:04 UTC `Rueckfrage-Gegenstand:` im Log). **29.08.2026 spät: die Zeile sagt, wessen Zug der Gegenstand ist** — ein Kurzziel außerhalb der Blase ist Person As eigenes Ziel (`question_target_origin`, `_rueckfragenzeile(…, eigener_zug)`), und sie spricht in Person-Namen, nie *»Nova«*; 10 Zeugen `tests/test_question_origin.py`, Labor 5/5 statt 0/5 als eigener Schritt | **im Betrieb gemessen 29.08.2026** (Kettenmessung, 20 Turns): Rückfrage-Gegenstand 17 × Kurzziel, 3 × keiner, nie eine `nutzer`-Eigenschaft (Wissensgespräch); Frage am Ende in 12 von 19 Antworten, 1,21 Fragezeichen je Antwort; Themenwechsel-Turn 21:37 UTC: eigener Zug erkannt, Haltung ohne Rückfrage |
| **Haltungsraum — Ablösung der alten Längenregel** | 🔴 | die drei Längenzweige sind entfernt (`responder.py:60`) `[Code]` | — · **🔴 seit 20.08.2026** (zuvor 🟢): `UMFANGSREGLER-BINDET-NICHT`, `NEUER-NUTZER-OHNE-UMFANGSVORGABE`, `MENGENANGABE-BINDET-NUR-UNTEN` offen |
| **Zuwendungs-Riegel** (erster Leser des Standes) | 🟠 | Riegel 1 gebaut, Schwelle 0,25 `[Doku]` | Riegel 2 **nicht gerechnet** → die stündliche Decke steht |
---
## 6. Denken und Wissen
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **Thinker** (Faktenprüfung + Websuche) | 🟠 | `[Code]` · Suchdisziplin 29.08.2026: eine Suche je Turn, Sachlage-Treffer zuerst (`novaberg-node-thinker.md` §4.4) | **nicht beobachtbar** — kein Protokoll seiner Weiche |
| **Tribunal** (Drei-Perspektiven-Score) | ~~🟢~~ → 🔴 (06.11.2026) | **06.11.2026, offen:** `MODELLFELD-UNGEPRUEFT-GELESEN` (mittel) `[Code]`; **🟢 → 🔴** · `[Code]` · `novaberg-node-tribunal.md` | `TRIB-PERSON-DRIFT` offen |
| **Recherche** (SearXNG, Dual-Modell, Destillation) | ~~🟢~~ → 🔴 (06.11.2026) | **06.11.2026, offen:** `MODELLFELD-UNGEPRUEFT-GELESEN` (mittel) — `queries: null` wirft in `agents/recherche/agent.py` `[Code]`; **🟢 → 🔴** · **1.647 Bibliotheksläufe**, 538 in sieben Tagen `[gemessen]` | `RECHERCHE-RELEVANZ-UNGEPRUEFT`, `RECHERCHE-LEER-GLEICH-AUSFALL`, `RECHERCHE-SALIENZ-KONSTANT` offen; `RECHERCHE-OHNE-AUDIT` behoben, im Betrieb belegt (05.10.2026) |
| **Wissensspeicher / Bibliothek** (`autonomous_wissen`) | 🟠 | **831 aktive Zeilen** `[gemessen 23.08.2026]`, seit 04.08. · `tests/test_bibliothek_partition.py` | **drei von vier Modi ohne Erzeuger** — nur `recherche` schreibt; `vertiefung`, `traum`, `nachfragen` sind deklariert und leer. Dazu `BIBLIOTHEK-FINDET-SICH-SELBST` offen · **🟠 seit 23.08.2026** (zuvor 🔴): `BIBLIOTHEK-FILTERT-ZWEISPALTIG` behoben — alle **vier** Lesepfade filtern dreispaltig, der Befund nannte zwei |
| **Vertiefung** (aus dem eigenen Bestand) | 🔴 | **171 aktive + 233 verfallene Aufträge** für einen Agenten, den es nicht gibt `[gemessen]` | der ganze Agent; jeder Auftrag verbrennt drei Versuche im Heartbeat-Takt |
| **Klärfrage** (aus dem Gegenüber) | 🟠 | `NachfragenAgent` gebaut `[Code]` | siehe §7 — 56 von 58 Läufen sind Fehler |
| **Traum-Modus** | ⚫ | keine der zehn `TRAUM_*`-Konstanten existiert `[gemessen]` | alles |
| ⏫ **Faszination** (muehelose Bindung an eine Sache) | 🟠 | `novaberg-thinking-faszination_k.md` v0.2a `[Doku]` — Konzept steht. ~~**Zwei von neun Faktoren gebaut** (§10.6)~~ → **überholt am 05.09.2026: die Rechnung steht vollständig**, alle neun Faktoren (§10.6). `praegungszug` und `merkmalszug` kamen am 03.09.2026, der Anker und die sechs Turn-Modulatoren am 05.09.; Erstlauf über 27 Träger **0,5451 bis 0,7580** `[gemessen 05.09.2026]`. Die Zeile stand danach einen Tag lang zu niedrig — nachgezogen am 06.09.2026. Der Traeger ist **nicht die Entitaet**, sondern ein Merkmalsprofil (Zwilling-Test) — und die Schicht dafuer steht seit dem 03.09.2026: `abstrakt_knoten` (Typ-Diskriminator `art`, sechs gesetzte Qualitaeten) und `traeger_qualitaet` (**vorzeichenlose** Kante, gegen das Valenz-Leck aus §4.4). Erzeuger `memory/quality_profile.py` als achter Schritt des Tageslaufs, gedeckelt auf 20 Traeger; Leser `ei/fascination.py::merkmalszug` = `m_max + 0,35 x Mittel(uebrige fuenf)`. `tests/test_quality_profile_schema.py` (6, rote Phase 6/6) und `tests/test_quality_profile.py` (32), Gegenprobe 3/3. **In einer eigenen Tabelle statt in `lzg_knoten`** — Abweichung vom Konzept mit Messwert: 24 Lesestellen in 13 Modulen, 22 nach Kriterien; Preis null, weil `lzg_knoten_haltung` 0 Zeilen traegt (`novaberg-memory-qualitaetsprofil.md` §3a) | **🟠, nicht 🟢:** ~~Alle drei Ernteversuche sind gescheitert~~ — das bleibt richtig und war der Grund, den Satz zu **setzen**. `[gemessen 03.09.2026]` im Erstlauf: 29 Traeger versucht, **25 profiliert**, 6,5 bis 8,1 s je Traeger, Merkmalszug **1,0350 bis 1,2100**; sechs Vorhersagen vorher aufgeschrieben, **drei getroffen**. **Der Hauptbefund ist negativ: 23 von 25 dominant `komplexitaet`, vier Dimensionen an keinem einzigen Traeger die staerkste** — gegen §6.2 (*„Kein Kollaps auf `komplexitaet`"*, dort 2 von 26). Die naheliegende Erklaerung ist **widerlegt** (vier kurze Proben: 34 Z. → 0,0 · 203 Z. → 1,0 · und `weite` 1,0 bei `komplexitaet` 0,5); **zwei Erklaerungen stehen noch** — homogener Korpus oder Modell gegen Mensch —, und die Messung, die sie trennt, ist benannt und nicht gemacht. Dabei behoben: ein Leerzeichen im Modellschluessel (`un gewissheit`, 4 von 20 Traegern, im Bestand nachgeholt 6/6). ~~**Offen:** `bindung_roh` (§10.2), die sechs Turn-Modulatoren (§10.5)~~ → **gebaut am 05.09.2026, §10 rechnet vollstaendig.** Der Anker normiert ueber eine **Saettigung** `n/(n+H)` statt ueber den Bestand (ein Min-Max-Massstab wanderte), `eigenimpuls` darf **fehlen** und renormiert dann die uebrigen Gewichte — die Bruecke traegt keine Herkunftsspalte, **318 von 1.027 Rohturns tragen keine** `[gemessen]`. Die Zusammenfuehrung gibt den **Rohwert neben dem geglaetteten** zurueck, weil die Glaettung ueber dem Deckel nicht umkehrbar ist. `tests/test_faszination_modulatoren.py` (39 Zeugen), Gegenproben 3/2 und 2/2. **Erstlauf ueber 27 Traeger** `[gemessen 05.09.2026]`: Faszination **0,5451 bis 0,7580**, Median 0,5712, **9 verschiedene Werte bei 27 Traegern**; der Deckel 2,0 wird nie erreicht (hoechster Rohwert 0,7792), **weder er noch die Halbstrecken sind am heutigen Bestand pruefbar**. 25 der 27 stehen auf derselben Bindung 0,2500. **Hauptbefund: die sechs Turn-Modulatoren spannen Faktor 16,2, die Traegerseite nur 2,0** — die Groesse haengt achtmal staerker am Turn als am Traeger, fuer eine Bindungsgroesse verkehrt herum; ob der Bestand zu jung oder die Spannen zu weit sind, trennt die Messung nicht, und **angeglichen wird nichts**. ~~**Offen bleiben:** der Verfall je Dimension (§10.4)~~ → **gebaut am 05.09.2026**, mit Aufrufer im Lesepfad: `ungewissheit` verfaellt ueber die **Beruehrungen**, die uebrigen fuenf ueber die **Zeit**; am Bestand sichtbar (Knoten 1408: 0,5 → 0,387 bei drei Turns). Dazu ein **Erzeuger im Turn** — die Faszination wird je Turn ueber die gelesenen Erinnerungen gerechnet und protokolliert, **auch der leere Turn schreibt**. `tests/test_faszination_erzeuger.py` (11), `test_faszination_speicher.py` (9). **Im Betrieb belegt 05.09.2026, vier Turns — und der Befund ist ein Nullbefund mit Ursache:** **kein einziger gelesener Knoten trug ein Qualitaetsprofil.** 28 von 3.363 aktiven sind profiliert; von 36 gelesenen sind es 2, und nur **7 von 36** passieren den Laengenfilter (400 Zeichen) — der Rest sind Sprechakt-Vermerke. Die Auswahl sortiert seither nach **echter Wiederkehr** statt `haeufigkeit` (die profilierten trugen 56,1 gegen 5,5 im Schnitt). **Seit dem 05.09.2026 rechnet sie im Betrieb** `[gemessen]` — Knoten 8685, 6 Qualitaeten. **Ihr erster echter Wert ist 0,0**, und der Grund ist eine unentschiedene Absichtsfrage: Der Knoten hat **0 Bruecken**, `bindung_roh(0,0,None)` ist 0, und ein Faktor 0 loescht das Produkt. Die Bruecke `verbindung` zaehlt **Schreibvorgaenge, keine Lesevorgaenge** — §10.2 laesst offen, ob Lesen eine Beruehrung ist (dagegen §7.1 *Lesen verstaerkt nicht*, dafuer: Faszination ist keine Verstaerkung). Bis zur Entscheidung gilt die enge Lesart. Die Profil-Auswahl folgt seit dem 05.09. der **Lesespur** (zweiter Anlauf: die Bruecke zaehlt Entstehung, nicht Lektuere; 4 von 9 gelesenen Knoten erfuellten alle Filter und hatten kein Profil). Bestand **50 Traeger, 300 Kanten** nach zwei Laeufen ueber `POST /admin/qualitaet/lauf`. **Seit dem 05.09.2026 hat die Traegerseite einen eigenen Tageslauf** (neunter Schritt): Bindung mal Merkmalszug **ohne Modulatoren**, damit die beiden Haelften trennbar werden. **Und seit demselben Tag rechnet die Praegungsschicht dort mit** — `strangzug` (§10.3a neu) misst die Lage des **Traegers** zu seiner naechsten Praegung, waehrend §10.3 nur die Lage des **Turns** misst; alle Traeger eines Turns bekamen bis dahin denselben Wert. `[gemessen]` fuenf Traeger, fuenf Naehen von **0,6736 bis 0,4484**; die Gravitation wirkt (Knoten 12051 an einem Strang mit 7 Faeden zieht **1,2656**, Knoten 8685 liegt naeher, aber an einem mit 2 Faeden, und zieht 1,1617). Ueber 50 Traeger hebt er den Median von 0,2828 auf **0,3377**, das Maximum auf **0,6442**, **0 von 50** ohne Strangbezug. **Dabei ein Defekt zum zweiten Mal**: Der Praegungszug las den gemittelten Turn statt des staerksten Segments — dieselbe Klasse wie `FADEN-EMBEDDING-VERDUENNT`, im selben Modul, vier Tage laenger stehengeblieben; die Kennung ist auf `[2x]` hochgestuft. Erster Lauf davor: **50 Traeger, 7 ohne Bindung, roh 0,0 bis 0,5249**. Er schreibt nichts in den Bestand; was fehlt, ist die **Reihe ueber die Zeit**, ohne die Deckel und Halbstrecken nicht kalibrierbar sind. **Offen bleiben:** die **Werteseite** der abstrakten Schicht (null Zeilen), Entitaeten und Themen als Traeger, **die Reihe ueber die Zeit** (Leser gebaut am 05.09.2026, `tools/fascination_series.py`; **null Punkte**, Punkt 1 kommt aus dem Tageslauf) und **der Laengenfilter** (nur 7 von 36 gelesenen Knoten; **am 05.09.2026 gemessen und nicht gebaut** — die Eroeffnungsformel trennt, wo die Themen es nicht tun, und der Zeichenschnitt kostet 177 Einsichten. Offen ist die vorgelagerte Frage, ob vorab gefiltert werden soll: **keine gemessene Null im Bestand**. `[Doku]` `novaberg-memory-qualitaetsprofil.md` §4a/§4b) — und ein **Leser**: Der in §11 beschriebene (`wissbegier x Bindung` statt `wissbegier` im Haltungsraum) ist seit dem 04.09. baubar, weil `state["haltung"]` entgegen dem Konzeptstand **zwei Leser hat**; er wird trotzdem **nicht gebaut**, solange die Faszination ueberall 0 ist — er wuerde den Umfangsterm loeschen. **Die Sperre ist gemessen, und die Engstelle ist eine andere als vermutet** `[gemessen 06.09.2026]`: Der Schreibpfad **steht** — `_faszination_protokollieren` schreibt je Turn eine Zeile und nennt den Grund, wenn nichts zu rechnen war. Ueber **35 Zeilen**: 83 Traeger geprueft, **79 ohne Qualitaetsprofil**, nur **3 Zeilen mit einem Wert**. Der Grund ist **kein Kalibrierproblem, sondern ein Defekt**: **50 von 3430 LZG-Knoten tragen ein Profil (1,5 %)**, und der Erzeuger im Tageslauf hat **seit seinem Einbau am 03.09.2026 keinen einzigen Traeger profiliert** — zwei Laeufe im `hintergrund_log`, beide **0 von 20** `[gemessen 06.09.2026]`. Die Ursache war der **Spur-Riegel**, und er griff genau wie gebaut: Der Tageslauf faehrt die **CPU-Spur**, in der das Sprachmodell verriegelt ist — `SpurVerletzungError` bei allen 20 Traegern, Laufzeit **0,09 s**. Sein Docstring sagt *„Reine Rechnung ueber Bestandswerte, **kein Modellaufruf**"*; der Einbau von Schritt 8 am 03.09.2026 hat die Zusicherung uebergangen. **Behoben am 06.09.2026**: eigener Agent `agents/qualitaet_profil/` in der `llm`-Spur, Takt **taeglich** (Setzung des Eigentuemers). **Beleg im Betrieb:** 05.09. im Tageslauf `0 von 20`, 06.09. 11:28 im eigenen Agenten **20 von 20**; Bestand 50 → **72 Traeger / 432 Kanten**, offene Kandidaten 350 → **328**. Nur Schritt 8 war betroffen — die Faszination (Schritt 9) rechnet ohne Modell und lief schon am 05.09. ueber alle 50 Traeger (roh 0,0 bis **0,6492**). Die 50 vorhandenen Profile stammen aus dem Erstlauf vom 03.09., der von Hand lief. **Ohne Profile kein Merkmalszug, ohne Merkmalszug keine Faszination** — das ist die Wurzel der Sperre, nicht der Deckel `QUALITAET_PROFIL_JE_LAUF = 20` · **06.09.2026 gemessen:** **72 von 3430** aktiven Knoten tragen ein Profil (2,1 %), Zuwachs 22 je Tag; im **Bestand** rechnet die Faszination Werte bis **0,7182**, im **Turn** bleibt sie leer (3 von 3 gelesenen Traegern ohne Profil, 10:34 UTC). **Nur die zweite Zahl entscheidet ueber die Sperre des Lesers.** Die Protokollzeile nennt die Traeger ohne Profil seither einzeln (`ohne_profil_ids`), damit die Luecke nachpruefbar ist `[gemessen 06.09.2026]` · **06.09.2026: sie rechnet zum ersten Mal im Turn.** Der Engpass war nicht der fehlende Leser, sondern die Eingabe: `QUALITAET_LAENGE_MIN = 400` hielt **0 von 95** je gelesenen Traegern als Kandidat offen — 18 passierten beide Filter und alle 18 trugen laengst ein Profil. **Die Laenge trennt nicht, was sie soll:** Sachaussagen liegen bei 271 Zeichen im Mittel, Sprechakt-Vermerke bei 281; die Schwelle liess 8 Vermerke durch und 1 Sachaussage. Auf **100** gesenkt (die Klassifikation liegt beim Modell, das 0.0 auf allen sechs Dimensionen sagen darf und dessen Nullprofil geschrieben wird). Warteschlange 0 → 55 → **35** nach einem Lauf, Bestand **92 Traeger / 552 Kanten** (davor 72/432), **0 von 20** neuen Profilen sind Nullprofile. `[gemessen 06.09.2026]` `werte {"6982": 0.5725}` statt `{}` — der erste Wert, den ein Turn je getragen hat. 4 Zeugen mit Zahlen aus dem Bestand, Gegenprobe beidseitig je 1 rot, Suite **3225** · **07.09.2026: der Leser ist gebaut, und der Satz oben *„er wird trotzdem nicht gebaut … er wuerde den Umfangsterm loeschen"* war in beiden Haelften falsch.** Es gibt seit dem 08.08.2026 **keinen Umfangsterm** an `wissbegier` (die Zelle ist gestrichen; die Speiche traegt `fragen 0.40` und `draengen 0.20`), und ein roher Faktor kommt ohnehin nicht in Frage — der Leser rechnet mit einem **Abbildungsfaktor um 1,0** (`F-NAHT-1`, `HALTUNG_FASZINATION_*`), sodass ein leerer Wert den Term neutral laesst statt ihn zu loeschen. **Zweiter Befund beim Bauen:** Der Haltungsraum steht **sieben Knoten vor** dem Praegungsknoten — die volle Turn-Faszination erreicht keinen Leser der Haltung, und vorziehen geht nicht (das Faden-Tor braucht die Salienz). Verwendet wird die **Traegerseite** (`faszination_der_gelesenen`, Maximum ueber die gelesenen Knoten). **Und die zweite Kontrolle hat die eigene Setzung widerlegt:** Der neutrale Punkt stand auf 0,50, geeicht am Median der *Turn*-Faszination (0,5712) statt der Traegerseite. `[gemessen 07.09.2026]` ueber 25 echte Turns (15 mit Wert, je Turn median **1** profilierter Traeger): Faszination **0,2704 … 0,5177**, Median 0,3619 — mit 0,50 waeren **12 von 15** gedaempft worden, Median-Faktor 0,8895; Nova haette im Mittel **weniger** gefragt als vor dem Umbau. Auf **0,36** korrigiert: Median-Faktor **1,0012**, 6 daempfend / 9 hebend. Wirkung in `werkstatt` mit Novas Rad: `fragen` 0,9026 → 0,8722 / 0,9029 / 0,9326. **Kein Zeuge konnte das finden** — sie fuehren den Punkt symbolisch und wandern mit; gefunden hat es *der Bestand statt der Zeugen*. 25 Zeugen (`test_haltung_faszination.py` 15, `test_haltung_knoten.py` 4, `test_faszination_speicher.py` 5, plus Eichungs-Zeuge mit Mess-Literalen), Gegenprobe 1/1, Suite **3250**. **Im Betrieb belegt 07.09.2026, 14:19:25 UTC** `[gemessen]`: echter Turn, `wartezimmer`, 3 gelesene Traeger / **1 mit Profil**, Faszination **0,5176** → Faktor **1,0985**. Dasselbe Rad mit und ohne: `fragen` 0,583699 → **0,620650**, `draengen` 0,487351 → 0,498847, **`umfang`/`naehe`/`waerme` exakt 0** — die Isolation auf eine Speichenzeile ist gemessen, nicht nur bezeugt; der Wert ist zeichengleich mit dem des Turns. Ein Vergleich ueber verschiedene Tage traegt nicht (dieselbe Landschaft: 0,6355 am 05.09., 0,5997 am 06.09., beide ohne Faktor — das Rad wandert). Zwei Anlaeufe davor brachen am Router ab (`HTTP 429`), ein Fremddefekt. **Offen bleibt, ob das Modell der geaenderten Vorgabe folgt** · **13.10.2026, gegen den Code gehalten:** *„alle neun Faktoren“* gilt fuer den Bestandslauf, **im Turn sind es sieben** — `f_anlage` ist dort fest 1,0 (`wissbegier=None` in `graph/nodes/praegung.py`), ~~`strangzug` rechnet nur `memory/fascination_store.py`~~ (Fundliste 13.10.). → **Seit dem 15.10.2026 acht:** Der Prägungsknoten rechnet den Strangzug je Träger in die volle Faszination des Turns und schreibt ihn in die Spur (`strangzug`, bei einer geworfenen Ausnahme `None` und `strang_ausfall`) `[Code]` · 9 Zeugen (`tests/test_faszination_strangzug_im_turn.py`); im Betrieb noch nicht gemessen. `f_anlage` bleibt bewusst neutral (`FASZINATION-TURN-SIEBEN-VON-NEUN`, offen zur Hälfte). *„§10.2 laesst offen, ob Lesen eine Beruehrung ist“* ist seit dem 05.09.2026 entschieden: **Lesen ist keine Beruehrung** (`novaberg-thinking-faszination_e.md`, A Nr. 7). Der Profil-Erzeuger ist seit dem 06.09. ein eigener Agent, nicht der achte Schritt des Tageslaufs. `[gemessen 13.10.2026]` **623 von 4.571** aktiven Knoten profiliert (13,6 %); seit dem 02.10. kein neues Profil (Pixie pausiert) · **15.10.2026: die vier Falsifikationsproben (`_k` §12) sind gefahren** — 21 Zeugen in `tests/test_faszination_falsifikation.py` über den ganzen Faktorsatz `[Code]`. Valenzblindheit (§12.1), Abgrenzung zur Neugier (§12.2) und der Botaniker (§12.4) **halten**; **der Zwilling (§12.3) scheitert** und steht als `expectedFailure` (`FASZINATION-ZWILLING-ERBT-NICHT`): Ein nie gezählter Träger hat Bindung 0 und damit Faszination 0. `[gemessen 14.10.2026]` 623 profilierte Träger in 117 Gruppen gleicher Profilstufen, 78 auf 0, **55 davon mit einem profilgleichen Zwilling auf 0,30 bis 0,74** (Median 0,52). Ein Zeuge hält zusätzlich fest, dass ein Strang aus der Awe-Dyade schwächer lädt als ein reiner — ob §12.1 dort gleiche Werte verlangt, ist offen. **🟠 bleibt:** Der Zwilling ist nicht gebaut · **15.10.2026, im Betrieb gemessen** (Messturns 15.10.2026, 16:33–16:48 UTC, acht Turns über Saturnringe, Abbruch am Wärmewächter in Turn 8): Die Spur `faszination` steht in 8 von 8 Turns, je 3 Träger; der Strangzug liegt in 7 Turns bei 1 bis 2 Trägern über 1,0 (höchster 1,336), im achten ohne Strangbezug · **06.11.2026, offene Frage:** Auf die Zeile zeigt `FASZINATION-TURN-SIEBEN-VON-NEUN`, nach der Tabelle der Ampeln wäre sie 🔴. Ob sie dorthin geht, ist offen, die Zeile trägt ⏫; die Ampel bleibt bis dahin 🟠 |
| ⏫ **Erkenntniszyklus** (Nachdenken vor Nachschlagen) | ⚫ | kein Code `[Code]` · `novaberg-thinking-erkenntniszyklus_k.md` | ordnet die Bauteile oben — nicht gebaut · 15.10.2026: keine Ampel — gebaut wurde am Nachbarn, der Aufgriff angebotener offener Fragen ist je Turn messbar (Zeile *Wissenslücken-Speicher*); der Zyklus selbst hat weiter keinen Code · **15.10.2026, im Betrieb gemessen** (Messturns 15.10.2026, 16:33–16:48 UTC, acht Turns über Saturnringe, Abbruch am Wärmewächter in Turn 8): Der Aufgriff urteilt in 8 von 8 Turns — 7 × *nicht angeboten*, 1 × *angeboten, nicht aufgegriffen* (drei Fragen angeboten) |
| **Gedankenkette** (ein Gedanke über mehrere Turns) | ⚫ | kein Code `[Code]` · `novaberg-gedankenkette_k.md` | alles — und sie ist die Struktur, die dem Umfangsregler fehlt |
| **Klärung** (Abweichung und Lücke) | ⚫ | kein Code `[Code]` · `novaberg-klaerung_k.md` | alles · **17.10.2026:** ein Entwurf der Klärfälle am Objekt der Sachlage liegt vor, seine Fragen sind am selben Tag entschieden (`novaberg-klaerung_e.md` A, Backlog `KLA-KLAERFALL-AM-OBJEKT`); beim Ändern und Löschen über einen Zeitraum gilt bis dahin ein sicherer Zwischenstand ohne Schreiben (`novaberg-agent-timeline.md` §4.5) — kein Code dieses Konzepts · **17.10.2026, später:** neu §2.3, die Bestimmung einer Entität über den vorhandenen Erzeuger der Mehrdeutigkeit und ein Ereignis mit unklarem Zeitraum (`_e` A, M4 und M5); gebaut wird die Bestimmung als ↳ *F3* des Faktengedächtnisses (§3.1) · **17.10.2026, abends:** die Bauart der Klärfälle angenommen (`_e` A, Zeile *Bauart*) — ein Feld am Objekt der Sachlage, das nur der Server schreibt und weiterträgt, die Antwort nur im ersten Menschenturn nach der Frage, der Wartezustand in Redis entfällt; sechs Schritte im Backlog `KLA-KLAERFALL-AM-OBJEKT`. Kein Code |
| ⏫ **Meinung / Willensstrang** | 🟠 | **Seit 30.08.2026 steht der Speicher**: `lzg_knoten_haltung` als additive Annotation auf `lzg_knoten` (Ladung −1..+1, Eigenschaft, Emotion, Praemisse-Kante, Verfall wie am Knoten), dazu `memory/repositories/node_stance_repository.py` mit Schreib-, Lese- und Verrechnungsweg. 19 Zeugen `tests/test_node_stance.py`, Suite 2701, Gegenprobe 2/1/3/1/1; an einem echten Knoten belegt: zwei Ladungen, Verstaerkung 0,8+0,6 → +0,70 (x2), netto +0,333 `[gemessen]` | **Der Speicher hat weder Erzeuger noch Leser** — niemand schreibt Ladungen (die Bildung aus dem Konzept §4 fehlt), und der Spreading-Pass fragt sie nicht ab. Vollstaendig gebaut, vollstaendig ungenutzt. Die Haltungsseite von `einwand.quelle` haengt weiter daran: `quelle="haltung"` ist ein Wert ohne Gegenstueck. Offen bleibt die **Charaktergewichtung** — wie sich widersprueckliche Ladungen charakterabhaengig verrechnen · **13.10.2026 bestaetigt** `[gemessen]`: `lzg_knoten_haltung` **0 Zeilen**, kein Erzeuger, kein Leser — das Repository rufen nur die Tests. Die Quelle aus §2a (`praegung_strang.valenz`) steht: **47 Straenge, keiner mit negativer Valenz** (0,35 bis 1,00); eine Haltung daraus koennte heute nur zustimmen |
| **Neugier** (Resonanz, Neuheit, Register) | 🔴 | **12.09.2026, zweiter Befund: der Luecken-Pfad hat drei Tore, und keines meldete seine Zahl.** `[gemessen]` Tor 1 (Vektorlaenge ≥ 2) offen in **40 von 106** Turns, Tor 2 findet 10 + 10 Kandidaten, Tor 3 laesst **0 von 40** durch. `GV_CHARAKTER_RESONANZ_SCHWELLE` stand auf einem ungemessenen Startwert **0,40** — ueber 150 echte Turns liegt `cosine(turn, kern)` bei median **0,228**, max 0,421; die Schwelle lag **zwischen p99 und Maximum**. Seit heute 0,30, und jede Stufe schreibt ihre Zahl. **Im Betrieb belegt:** 20 Turns an einem anderen Paar — Tor 1 offen in **13 von 20**, **7 Turns mit GV4-Luecken** (je 8, am Deckel), 0 ausgefallen, max 70,5 °C. Vorher 0 von 40. **Sie filtert dabei nicht, was ihr Name sagt:** Der Wert ist fuer alle Kandidaten gleich — die Naehe des **Turns** zum Kern, ein globaler Schalter. 13 Zeugen. **12.09.2026, dritter Befund — beide Tore sind jetzt je Paar und je Modus vermessen, und beide tragen eine Decke, die niemand gesetzt hat.** `[gemessen]` **Tor 1:** ueber 1434 Rohturns 116 mal Laenge 3 (8,1 %), Tor offen in **36,6 %** — aber in `fachgespraech`, `lernmodus` und `philosophischer_austausch` ist Laenge 3 bei **jeder** Faktorstellung ausgeschlossen (beste Summe exakt 2.5, `round` rundet zur geraden Zahl), und dort liegen **794 der 1434 Turns**. Alle 116 Dreien tragen `vertrauen` **und** `locker`. **Tor 3:** die Schwelle 0,30 ist global, `cosine(turn, kern)` ist paarweise — ueber sieben Paare spreizen die Mediane von **0,097 bis 0,282**, und bei zwei Paaren passiert **kein einziger** Turn. Dasselbe Paar ergab 17,3 % und einen Tag spaeter 23 %, allein durch eine neue Kern-Destillation. Alt: **12.09.2026: die Wiedervorlage schliesst, was sie nachweislich kennt** — `_bekannte_schliessen`, erster Lauf **125 von 1908**, zweiter 0; `geschlossen` hat damit zum ersten Mal einen Schreiber. **Die Schwelle wurde vorher gemessen und verworfen:** Themen, die sie kennt, erreichen median **0,490** Aehnlichkeit, offene Luecken **0,441** — die Verteilungen ueberlappen, weil Luecken **Nachbarthemen** sind. 13 Zeugen, Gegenprobe 1/1. **Im Prompt wirkt davon wenig:** 2 der 125 haetten in den Top-8 gestanden, 4 in den Top-50. **🔴 bleibt:** 1783 Zeilen offen, und wonach sie zu schliessen waeren, ist eine Absichtsfrage. Alt: `ei/neugier.py` `[Code]` · **07.09.2026 herabgestuft von 🟢** `[gemessen]` — drei Befunde, jeder fuer sich ein Blocker: (a) **`novaberg-thinking-curiosity_k.md` sagt woertlich, die Formel `NOVA_NEUGIER x Resonanz x Neuheit` sei *nie gebaut*** — sie steht in `agents/wissensluecken/berechnung.py::neugier_vektor_berechnen`, gebaut am **27.07.2026** (`f62302a`), demselben Tag, an dem der Vermerk geschrieben wurde. ~~Wer heute wissen will, was gebaut ist, bekommt aus der Doku die falsche Auskunft.~~ → **am 08.09.2026 berichtigt**, und der Vermerk trug einen **zweiten** falschen Satz: *„Insbesondere fehlt der Neuheits-Faktor vollstaendig“* — `neuheit_berechnen` steht zwanzig Zeilen ueber der Formel. Der Vermerk widerlegt sich selbst: Seine Tabelle trennt drei Groessen, der Satz darunter wirft zwei davon zusammen. **Befund (a) ist damit erledigt.** (b) **`neugier_vektor` hat keinen Leser** ausserhalb seines eigenen Agenten — dieselbe Klasse wie `HALTUNG-OHNE-LESER`, und sie ist bei der Neugier seit sechs Wochen unbemerkt. (c) **Der Wertebereich wird zu 23 % genutzt:** ueber 1762 Zeilen 0,0102 bis 0,1148 bei einer Spanne von [0 … 0,5], Mittel 0,0640 `[nachgemessen 08.09.2026]`. **(b) und (c) zusammen sind seit dem 08.09.2026 `NEUGIER-VEKTOR-OHNE-LESER`** (→ behoben am 05.10.2026: der Leser steht seit `3c9bc56`; die Eichung (c) bleibt offen) — sie gehoeren zusammen, weil eine Eichung ohne Verbraucher so wenig bewegt wie die Groesse selbst. (d) **neu am 08.09.2026: `TRAUM_NEUGIER_SCHWELLE` aus §3.4 existiert nicht** — und haette sie existiert, waere sie **nie** ueberschritten worden (Maximum 0,1148 gegen 0,25). Dass sie fehlt, ist der Grund, warum ueberhaupt Luecken entstehen. ⏫ **Band A seit 07.09.2026, Doku-Teil erledigt am 08.09.2026** · **26.10.2026:** Die Säulen M, D und S lesen ihre Tabellen über eine Prüfung — ein Wert außerhalb bekommt den neutralen Faktor (M 1,140, das Mittel; D und S 1,0, der Eintrag `neutral`) mit Fehlerzeile; das Ergebnis ist mit allen sechs Säulen ungleich 1,0 als Literal bezeugt (Code-Tree `6feb70a`, Kennung wird nachgetragen → committet als `e71df6b`, die Doku dazu als `7b35557`; `tests/test_kanon_usage.py`) `[Code]`; an 1817 gespeicherten Turns ändert sich kein Faktor, neu sind 39 Fehlerzeilen `[gemessen 26.10.2026]` | `session_aktualitaet` ohne Aufrufer `[gemessen]`; Rückkopplung Lücken→Neugier nicht integriert · **13.10.2026, gegen den Code gehalten:** Die Schwelle von Tor 3 steht auf **0,15** (`GV_CHARAKTER_RESONANZ_SCHWELLE`, `config.py:3263`), nicht auf 0,30; der Docstring von `ei/wissensluecken.py::_qualifizieren` nennt noch 0,30. ~~Der Neugier-Boost aus den Zielen ist strukturell 0 (Fundliste 13.10.)~~ → **behoben am 15.10.2026** (`NEUGIER-BOOST-AUS-ZIELEN-IMMER-NULL`, Archiv): `neugier_boost = max(cosine(Thema, Ziel) × motivation)` je Kandidat über die aktivierten Ziele, ab `GV_NEUGIER_BOOST_SCHWELLE` 0,30; die Ziel-Vektoren reisen unter `ziel_vektoren`, ein Ziel ohne Vektor wird gezählt und in der Spurzeile `gv4_neugier_boost` gemeldet `[Code]` · 23 Zeugen (`tests/test_neugier_boost_ziele.py`); im Betrieb noch nicht gemessen. Damit ist *System 3* von `GV4-SYSTEM-2-TOT` behoben; **🔴 bleibt**, weil System 2 (`session_aktualitaet` ohne Aufrufer) offen ist · **15.10.2026, im Betrieb gemessen** (Messturns 15.10.2026, 16:33–16:48 UTC, acht Turns über Saturnringe, Abbruch am Wärmewächter in Turn 8): Der Neugier-Boost aus den Zielen steht erstmals über 0 — **0,309** (zwei beitragende Ziele) in einem von zwei Turns mit aktivierten Zielen; Nulllinie 0 in jedem Turn. Wissenslücken im Prompt in 1 von 7 Turns (2 Lücken). Keine Ampel: der Lückenagent läuft nur im pausierten Hintergrund |
| ⏫ **Antrieb / Ziele** | 🟠 | **374 Ziele, davon 29 aktiv** `[gemessen 30.08.2026]` — kurzfristig 7 aktiv / 6 inaktiv, mittelfristig 9 / 5, langfristig 13 / **334**; `ZielDecayAgent` läuft. Den kurzfristigen Horizont gibt es erst seit Scheibe 2 des Lage-Konzepts (28.08.2026) | `ZIELE-AUS-ZERRBILD` offen; **keine Wirkung auf die Emotion** (§2). **Neu gesehen am 30.08.2026:** 334 inaktive langfristige Ziele bei einer mittleren Motivation von 0,80 — ~~der Verfall raeumt sie ab, ohne dass ihre Motivation je faellt~~ → **berichtigt am 13.10.2026, gegen den Code:** abgeschaltet hat sie die Destillation des CharakterAgenten, die vor jedem neuen Satz alle aktiven langfristigen Ziele abschaltet (`agents/charakter/agent.py`, `ziel_deaktivieren`); die 0,80 sind ihre feste Setzung (`motivation=0.8`); der Verfall fasst nur mittel- und kurzfristige an (`agents/ziel_decay/agent.py`). ~~`memory/ziele.py::ziel_motivation_anpassen` hat **keinen Aufrufer** — eine Verstaerkung bei Begegnung gibt es nicht.~~ → **gebaut am 15.10.2026:** Zieht ein Turn ein mittelfristiges Ziel über `GRAVITATIONS_SCHWELLE`, beginnt seine Vergessenskurve neu (`motivation_basis_am` = jetzt), der Anker bleibt (`memory/ziele.py::ziele_bei_begegnung_verstaerken`, gerufen im Enricher; Eintrag `ziele_verstaerkung` im `pipeline_log`, Aktivierungen je Horizont daneben) `[Code]` · 15 Zeugen (`tests/test_ziele_verstaerkung.py`); am Bestand noch nicht gemessen. `ziel_motivation_anpassen` setzt dabei auch `aktualisiert_am` und prüft `rowcount` nicht (`novaberg-thinking-drive_t.md` §7.1). **🟠 bleibt.** Erzeugt wird mehr, als je gelesen wird. `[gemessen 13.10.2026]` aktiv lang 13 / mittel 5 / kurz 7 (davon 0 lebend — kein Verfallslauf seit dem 03.10., Pixie pausiert), inaktiv 384 / 14 / 237 |
| **Metakognition Phase 1** (Pipeline-Log) | 🟠 | **154.383 Zeilen** `[gemessen 04.09.2026]`, Tabelle und Helfer-API seit Chat 104, Retention samt `turn_roh`-Ausnahme belegt (`MK-1a` ✅) | **🟠 seit 04.09.2026** (zuvor 🟢): Das ZIEL lautet *„jeder Node schreibt seine Entscheidung"* und ist an **4 von 11 Knoten** belegt `[gemessen 04.09.2026, laufende DB]`. Die sieben stummen — Perzeption, Router, Planner, Responder, Thinker, Tribunal, Corrector — haben über 154.383 Zeilen **nicht eine einzige**. Die Lücke ist keine zufällige: **Es schweigen genau die Knoten, die wählen und urteilen**; das Log trägt Berechnung und Schreibvorgang, kein Urteil. Als `MK-1b` in `novaberg-metakognition_k.md` §7 geführt |
| **Metakognition Phase 2** (`pipeline_search`) | ⚫ | Bezeichner existiert nicht `[gemessen]`; der Thinker führt fünf Werkzeuge, keines liest das Log | alles **im Gesprächspfad**. Im Hintergrund wird das Log gelesen — Charakter-Destillation und Wissens-Rückweg `[gemessen 04.09.2026]`. Vorbedingung ist `MK-1b`: Auf dem heutigen Log beantwortet ein `pipeline_search` Fragen nach Rechenwegen, nicht nach Entscheidungen |
| **Metakognition Phase 3–6** (Vorsätze, Selbstreflexion) | ⚫ | keine Tabelle, kein Agent `[gemessen]` — auch kein Wirkort: weder `VORSAETZE` noch `vorsatz_` kommen im Server vor, und `selbstreflexion` steht in keiner Routing-Tabelle | alles. §5.3 (Charakter-Gravitation) ist zusätzlich **gesperrt**, solange der `kern_hash` das Zerrbild trägt |
| ⏫ **Frames · Skills · Task-Orchestration · Cognitive Pipeline — im Bau als Lage-Konzept (Sachlage, Scheiben 1–11)** | ~~🟠~~ → 🔴 (24.10.2026) | **🟠 → 🔴 am 24.10.2026:** zwei offene Kennungen zeigen darauf — `SACHLAGE-RECHERCHE-WIEDERHOLT-IM-FOLGETURN` (mittel; Scheibe 8: die Sperre für den eigenen Bestand prüft nur die Äußerung des laufenden Turns, ein Termin-Thema wurde in Messturns vom 23.10.2026 in drei späteren Turns erneut im Web gesucht) und `SACHLAGE-WARNUNG-NACH-OFFEN-AM-LATENTEN-OBJEKT` (niedrig; die Formprüfung meldet *nach offen* auch dort, wo ein latentes Objekt `offen` danach verliert, im Hauptpfad ohne Logzeile) `[Code]` · **13.09.2026: der Blocker ist behoben — 🔴 → 🟠.** `LAGE-FORMPRUEFUNG-UNVOLLSTAENDIG` ✅ (`novaberg-bugs-archiv-antwortpfad.md`): `graph/nodes/sachlage_form.py` haelt jedes Objektfeld — `name`, `akut`, `klasse`, `gedeckt`, `offen`, die Felder des Servers — beim Parse, beim Laden der vorigen Blase und im Lesepfad des Kontext-Tabs; **ohne Wert ist eine Eigenschaft offen** (Entscheidung des Eigentuemers, Konzept §3 nachgezogen); Kanonwoerter sind kein Wert, gleichnamige Objekte werden zusammengefuehrt. ~~29~~ 31 Zeugen, Labor 0 Abstuerze, zwei Betriebsturns mit akutem Objekt durchgelaufen. **Gruen ist die Zeile nicht:** Das Zielbild §3a (Teilung der Blase, emotionaler Zug) und die Pipeline-Schritte 4, 7, 8 samt Migration sind offen, Skills und Task-Orchestration ohne Code. **Scheibe 11 gebaut am 13.09.2026 — das Eigenschaftsgedaechtnis** (ein Teil des Frame-Lagers in Konversationsfassung): drei Tabellen `sachlage_objekt`, `sachlage_objekt_turn`, `sachlage_eigenschaft` (`db/init.sql`, kein Verfall, hoechstens ein aktiver Wert je Eigenschaft von der Datenbank erzwungen); je gerechnetem Turn neu / bestaetigt / abgeloest — **ein neuer Wert loest ab, statt zu ueberschreiben**; das Objekt wird ueber die Magnete seiner juengsten Turns an `entitaeten` gebunden; der Rueckweg laeuft ueber den Aufloeser als Quelle `eigenschaft` mit woertlichem Wert (`graph/nodes/sachlage_memory.py`, `memory/sachlage_properties.py`, `sachlage_resolver.py::property_hits`). ~~39 Zeugen (11 Schema live, 18 Ablage und Bindung, 10 Rueckweg), Suite **3656 gruen, 0 uebersprungen**~~ → berichtigt: **44 Zeugen** — 12 live an Schema und Ablage (`test_sachlage_properties_schema.py`, darin neu / bestaetigt / abgeloest und die verschwundene Eigenschaft), 18 an Namensregel, Magneten, Bindung, Knoten-Verdrahtung und Rundlauf (`test_sachlage_memory.py`), 14 am Rueckweg (`test_sachlage_recall.py`, darin Kappung und ß); Suite **3663 gruen, 0 uebersprungen**. **Die zweite Kontrolle (15:29 UTC) fand drei Fehler, die kein Zeuge sah:** ein gespeicherter Wert deckte eine fremde Eigenschaft woertlich (*»Alter: 970 Jahre«* als Masse), Ansprueche des Aufloesers liefen ohne Wertpruefung, und Form und Rueckweg verglichen Namen mit `lower` statt `casefold` wie die Datenbank (ß nicht gefunden, zwei Schreibweisen loesten einander ab) — alle drei behoben und bezeugt; Labor: Korrektur 30 → 33 ms 3/3 mit inaktivem Vorgaenger, 0 von 6 Schein-Abloesungen, Rueckweg ohne Wiederaufnahme nach den Nachbesserungen in 2 von 3 gueltigen Laeufen woertlich; Betrieb 13.09.2026, 14:47–14:52 UTC: Objekt an die Entitaet *Crab-Pulsar* gebunden; Wert-Regel im rohen Parse (fuenf Durchgaenge je Fassung): gedeckte Werte ohne Angabe 44 % → 10 %. **Offen:** Namensdrift erzeugt Dubletten, der Rueckweg ist im Betrieb nicht belegt, `SACHLAGE_BINDUNG_TURN_FENSTER` und `SACHLAGE_EIGENSCHAFT_ANGEBOT_MAX` sind Startwerte (Konzept §4, Scheibe 11). *Befund vom 12.09.2026, seither behoben:* **Ein Betriebsturn ist an der Lage abgebrochen — `LAGE-FORMPRUEFUNG-UNVOLLSTAENDIG`, Blocker.** Das Konzept verlangt einen Parse, der *laut ausfaellt statt still leer* (§3 Festlegung 1), und definiert `gedeckt` als Zuordnung, `offen` als Liste. `_validate_artifact` normalisiert `traeger`, `kritikalitaet` und `sprecher` — die drei Felder der **Scheiben ~~7 bis 9~~ 8 bis 10** — und **nicht** `gedeckt` und `offen`, die seit **Scheibe 1** im Artefakt stehen und von allen zehn Scheiben gelesen werden. `[gemessen 12.09.2026, 18:55 UTC]` Das Modell lieferte `gedeckt` als Liste; von sechs Lesestellen riss **eine** den Turn ab (`.items()`), **drei** iterieren die Liste und laufen lautlos falsch weiter, **zwei** haben den Riegel. ~~Die Abhilfe folgt dem Hausmuster der drei bestehenden Normalisierer; davor steht eine Absichtsfrage beim Eigentuemer (Liste verwerfen oder umformen). **Ampel rot, solange ein Turn daran sterben kann.**~~ → entschieden und behoben am 13.09.2026 (oben). `graph/nodes/sachlage.py`, `sachlage_form.py`, `sachlage_memory.py`, `sachlage_resolver.py`, `sachlage_plausibility.py`, `sachlage_research.py`, `memory/sachlage_history.py`, `memory/sachlage_properties.py`, `memory/kurzziel.py` `[Code]` · Zeugen `tests/test_sachlage*.py`, `test_kurzziel.py` · `sachlage_verlauf` **21 Zeilen** `[gemessen]` 29.08.2026 · Pipeline-Konzept §11: Schritte 1, 2, 3, 5 gebaut, 6 und 9 begonnen, 4/7/8 und Migration offen, ein Teil des Frame-Lagers seit 13.09.2026 (Scheibe 11); Skills und Task-Orchestration ohne Code | vier Konzepte aus Chat 80/81; **bis zum 28.08.2026 kein Code** (die Ampel stand bis zum 29.08. auf ⚫, obwohl acht Scheiben gebaut waren — gefunden von einer Frage nach der Featureliste). **Stand 28.08.2026:** erste baubare Scheibe zugeschnitten — `novaberg-thinking-lage_k.md` (28.08.2026): Lage-Analyse je Turn, kurzfristiger Zielhorizont, Gesprächsführung aus der Lage; drei Scheiben mit ZIEL/TEST/MESSUNG. **Scheibe 1 gebaut am 28.08.2026** (`graph/nodes/sachlage.py`, vor dem Router): 15 Zeugen, Messreihe 8/10 strenger Abgleich bei 10/10 sinngemaess, Fortschreibung offen→gedeckt belegt, Median 2,1 s je Call; Scheiben 2–4 offen als `SACHLAGE-SCHEIBE-*` im Backlog, Scheibe 4 (Gedaechtnis + Impuls-Bruecke, DDL) entworfen 28.08.2026. **Betrieb belegt 28.08.2026, 16:05 UTC** (`labor/2026-08-28_sachlage_erster_zeuge.py`, fuenf Turns gegen den laufenden Server): 6 `pipeline_log`-Zeilen `node='sachlage'` (5 gerechnet, 1 `impuls_uebernommen`), Fortschreibung ueber alle fuenf Turns (gedeckt 1→4, zweites akutes Objekt ab Turn 4), 2,7–3,9 s je Call, 0 Seiteneffekte in `fakten`/`notizen`/`ziele`/`wissensluecken` — die Bedingung fuer Scheibe 2 ist erfuellt. **Abends nachgemessen:** der Fund »Deckung nur aus Nutzer-Aeusserungen« ist halb widerlegt — Novas Antworten decken (gestellter Fall 3/3), die Betriebsantwort war keine; darunter lag der 400-Zeichen-Schnitt des Verlaufsrenderings (behoben: 1600, ohne Regieanweisungen; 5 Zeugen, Suite 2469, Gegenprobe 1/2/1). **Scheibe 4 gebaut am 28.08.2026** (`memory/sachlage_history.py`, Tabelle `sachlage_verlauf` ohne Verfall, `shadow_auftrag.ausloeser_turn_id`, Kette Auftrag→Stapel→Ereignis→Knoten, `[SACHLAGE-BRUECKE]` im Verfasser; **Abends:** `thema`/`gegenstand` benennen die Sache, nie den Wechsel (Prompt-Regel, 5/5 vorher/nachher, Suite 2470). **Scheibe 3 gebaut am 28.08.2026, abends** (die Rückfrage bekommt ihren Gegenstand: `question_target`, `_rueckfragenzeile(gegenstand)`; 10 Zeugen, Suite 2488, Gegenprobe 1/2/3/1; Labor zwei Arme über die zehn Äußerungen: Rückfrage trifft den Gegenstand 4/4 gegen 1/4 bei gleicher Fragehäufigkeit; Betrieb 21:04 UTC). **Scheibe 5 gebaut am 28.08.2026, abends** (die Wiederaufnahme: `_resume_lookup`, `history_nearest(ausser_thema)`, `wiederaufnahme` im Artefakt, Block-Zeile; 8 Zeugen, Suite 2478, Gegenprobe 1/3/1/1; Labor: Rückkehrsätze 0,40 auf die alte Blase, fremd ≤ 0,16, Objektname und Deckung 3/3 wörtlich fortgeführt; **Betrieb 20:44 UTC:** ein echter Turn traf die Pulsar-Blase von 17:24 mit Kosinus 0,62, Objektname wörtlich, `pipeline_log` trägt `wiederaufnahme`). Zeugen `tests/test_sachlage.py`, `tests/test_sachlage_bruecke.py`, `tests/test_sachlage_verlauf_schema.py`, `tests/test_sachlage_kette.py`; Suite 2433 gruen): Kettenanfang geschlossen — das KZG-Hash traegt seit dem 28.08.2026 die `turn_id` (vorher 0 von 300), Zeugen an Salienz-Schreibauftrag, Hash, KZG-Queues, Promotion-Rueckweg; Labormessung Rang 1 **10/10**, Bruecke hart und Rueckfall (0,73), Fremdthema ohne Bruecke (0,25); Schwelle nach Messung 0,35. Rest: die erste echte Zustellung mit Bruecke steht aus (Altbestand des Stapels ohne `ausloeser_turn_id`). **Scheibe 6 gebaut am 28.08.2026, spaet — der Frame-Aufloeser, Konversationsfassung** (Pipeline-Konzept Schritt 3): `graph/nodes/sachlage_resolver.py` baut aus dem Gedaechtnis-Pool des Turns (KZG, LZG, Bibliothek, Aufzeichnungen; Kalender zu akuten Objekten) ein nummeriertes Angebot, ein eigener Call haelt die offenen Eigenschaften dagegen, nur angebotene und offene Treffer decken — mit Quelle in `quellen`; der Sachlage-Prompt bleibt zeichengleich. 28 Zeugen, Suite 2520 gruen, Gegenprobe 2/0→1/1/1; Labor (`labor/2026-08-28_sachlage_aufloeser_zwei_arme.py`): als Feld im Sachlage-Call 5/5, 0/5, 1/5, 1/5 je Fassung — als eigener Call **5/5 richtig, 0/5 falsch**; Betrieb 23:00 UTC: eine offene Eigenschaft aus dem KZG gedeckt, Quelle im Folgeturn geerbt, Sachlage samt Aufloeser 5,3 s. Nicht befragt: `fakten` (0 Zeilen), Notizen (Leser schreibt beim Lesen). **Scheibe 7 gebaut am 29.08.2026, morgens — die Plausibilitaetspruefung gegen Weltwissen** (Pipeline-Konzept Schritt 5, Frames §6): `graph/nodes/sachlage_plausibility.py`, ein eigener Call bei akutem Objekt ueber die Aeusserung, vier Stufen, nur `frage_wert`/`konflikt`/`unmoeglich` im Artefakt (`plausibilitaet`), Verfasser-Block *»Zweifel (Stufe): Behauptung — Grund«*, Kontext-Tab `⚠`. 15 Zeugen, Suite 2535 gruen, Gegenprobe 1/1/1/1; Labor (`labor/2026-08-29_sachlage_plausibilitaet_messung.py`, 10 Aeusserungen × 3): erste Fassung 3/12 Fehlalarme, zweite 0/12; die Objektzuordnung verwarf erkannte Befunde unter fremdem Namen (Labor 3/3, Betrieb 1/1) — seit der Zuordnung per Enthaltensein **0/12 Fehlalarme, 18/18 nicht-plausible gemeldet**, Stufe im Mittel eine zu hoch; Betrieb 06:53 UTC: `unmoeglich` (zwoelf Sonnenmassen, TOV-Grenze) im `pipeline_log`, im selben Turn deckte der Aufloeser 2 offene Eigenschaften aus dem Gedaechtnis. Schritt 4 (Cross-Frame) bleibt Konzept. **Scheibe 8 gebaut am 29.08.2026, vormittags — der Wissenstraeger** (Pipeline-Konzept Schritt 6 als Lueckenbehandlung, Schritt 9 mit einer Websuche begonnen): jede offene Eigenschaft traegt `nutzer` / `welt` / `nachschlagen` (im Sachlage-Call, gegen den Kanon gehalten, aus der vorigen Blase geerbt); nur `nutzer` ist Rueckfrage-Gegenstand, die anderen Antwortstoff im `[SACHLAGE]`-Block, fuer die erste `nachschlagen`-Eigenschaft eine Websuche mit Wortlaut-Filter (`graph/nodes/sachlage_research.py`). 17 Zeugen, Suite 2552 gruen, Gegenprobe 2/1/2/1; Labor (`labor/2026-08-29_sachlage_traeger_messung.py`): Alltag 43 nutzer / 5 welt, Wissenschaft 3 / 24 / 15 nachschlagen, 0 ohne Traeger; Betrieb 07:27 UTC: Nova antwortet mit dem Rekordwert statt zu fragen — die Suche dazu lieferte Rauschen, der Filter steht seither; **die Suche selbst seit 29.08.2026, 08:33 UTC, über die Wikipedia-Volltext-API statt Bing** (searxng-Konfiguration; derselbe Code-Pfad aus dem Server-Container: 3 von 3 relevante Treffer, vorher 0 von 3). **Der Betriebsturn mit Treffer im Block ist am 30.08.2026, 10:33 UTC gelaufen** `[gemessen]`: Serper 3 Treffer, 3 von 3 nennen die Sache (vorher 0 von 3), 4 Blockzeilen, kein Rueckfrage-Gegenstand, und der Wert steht in Novas Antwort (3.450 K). **Scheibe 9 gebaut 08:54 UTC:** jede gedeckte Eigenschaft trägt ihren Sprecher (`nutzer`/`nova`, `_normalize_speakers`, `carry_speakers`, `speaker_lines`), der Herkunftsblock des Nutzer-Turns führt (`verfasser.fremder_reiz.txt`); 15 Zeugen `tests/test_sachlage_sprecher.py`, Suite 2571, Gegenprobe 1/2/2/2 + 1/1 (zweite Kontrolle: Sprecher nur an akuten Objekten); Labor zwei Arme Zuschreibung an Person B 0/10 → 10/10, Fortführungsfall 3/3 nach `max_output_tokens` 768 → 1024; Betrieb 08:51 UTC: *»Der Nutzer hat zu Kollaps gesagt: …«* im Block, Nova *»du hast das Bild gerade so perfekt getroffen«*. **Betriebsmessung 18:59–19:47 UTC, 20 Turns** (`labor/2026-08-29_kette_betriebsmessung.py`): Träger 0/17/14, Antwortstoff 17/20, Sprecher 31/11/21, Stoff nennt den Nutzer 7/8 Behauptungen, Plausibilität 3/3 ohne Fehlalarm, Auflöser 16 Deckungen, Websuche 1/8 (Wikipedia-Sperre durch 23 Thinker-Suchen), Latenz median 99 s, `eval_count` max 912; Rückfrage-Gegenstand kommt aus dem stärksten Kurzziel (Gravitation, gewollt). **Nachtrag 21:40 UTC:** der Gegenstand trägt seine Herkunft (`question_target_origin`), die Rückfrage-Zeile führt bei Person As eigenem Zug; 10 Zeugen, Gegenprobe 2/2/1, Labor 5/5 statt 0/5 als eigener Schritt. Der Block spricht in den Namen seines Lesers (Person A/B beim Verfasser, Nova/Nutzer beim GV; 5 Zeugen, Suite 2586). **Scheibe 10 gebaut am 30.08.2026 — das Gewicht einer Luecke** (Pipeline-Konzept Schritt 6 damit vollstaendig): jede offene Eigenschaft traegt `kritisch`/`unkritisch`; Rueckfrage und Websuche ziehen die kritische vor, der Block nennt sie, wenn sie beim Nutzer liegt. 22 Zeugen `tests/test_sachlage_kritikalitaet.py`, Suite 2682, Gegenprobe 1/1/0/1/1 — die Null fand einen fehlenden Verdrahtungszeugen, der jetzt auch `carry_holders` und `carry_speakers` deckt; Labor 16 kritisch / 34 unkritisch ueber 15 Aeusserungen, 0 von 18 Objekten mit mehr als einer, Rueckfrage-Gegenstand 2 von 8 geaendert; Betrieb 11:41 UTC mit Blockzeile und Rueckfrage-Gegenstand. **Offen: ob Nova die Frage dann auch stellt** — im Betriebsturn tat sie es nicht. **Scheibe 2 gebaut am 28.08.2026** (`memory/kurzziel.py`, `tests/test_kurzziel.py` 21 Zeugen, Suite 2454 gruen; die Gravitation traegt das kurzfristige Ziel per Bauart, weil sein Zielsatz die Schwelle nie erreicht — gemessen 0,09–0,29): zwei Lagen mit demselben akuten Objekt → ein `kurzfristig`-Ziel, Verfall in Stunden; Labormessung A→1, B→Ziel, C→kein zweites, D→Reset. Der Entwurf sagte »dasselbe Nutzerziel« — gemessen traegt das Feld das Ziel der Aeusserung (Kosinus 0,40–0,50 beim selben Vorhaben), das akute Objekt traegt durch **14.09.2026: Scheibe 12 entworfen** — der Empfang liest die Lage; Absicht des Eigentuemers im Wortlaut, sechs Teile A–F als eigene Zeilen darunter, ~~nicht gebaut~~ (`novaberg-thinking-lage_k.md` §4) `[Doku]` → **gegen den Code gehalten am 13.10.2026:** B bis E gebaut, A ~~ohne Bestandsabgleich und~~ ohne Nachtrag (der Bestandsabgleich ist gebaut am 15.10.2026, Zeile darunter), F nur fuer die Timeline (die Zeilen darunter); der Code des Strangs ist seit dem 19.09.2026 unveraendert. `[gemessen 13.10.2026]` `sachlage_verlauf` 953 Zeilen (zuletzt 08.10.), `sachlage_objekt` 443, davon 29 an Entitaeten gebunden · **15.10.2026, Scheibe 8 nachgezogen:** Fragt die Äußerung nach dem eigenen Bestand des Menschen, unterbleibt die Websuche der Sachlage, laut im Log (`sachlage_research.py::own_records_cue`); die Kalenderzeilen des Auflösers schließen Erinnerungs-Anker aus (~~`_calendar_hits`~~ → seit 17.10.2026 im gemeinsamen Leseweg der Termine); 30 Zeugen; im Betrieb nicht gemessen · **17.10.2026, abends, Scheibe 6 nachgezogen** `[Code]`: Der Frame-Auflöser liest Termine über den gemeinsamen Leseweg — je akutem Objekt ein Fenster aus `graph/appointments.py::time_window` (ein Zeitraum wie *November*) oder `search_window` (ein Titel), gelesen mit `memory/timeline_reading.py::read_appointments` und der Uhr des Turns; die Angebotszeile ist die des Blocks `[TERMINE]`, ein abgelaufener Termin trägt *vergangen*, die Herkunft ist `timeline#<id>`. 18 Zeugen in `tests/test_sachlage_calendar_reading.py`, Server-Suite 4566 → 4584 grün; im Betrieb nicht gemessen (↳ *Scheibe 13*, Teil H) |
| ↳ **Scheibe 12 A — die Wahrheit der Antwort** (keine Speicherbehauptung ohne Schreibergebnis im Turn) | 🟠 | **⚫ → 🟠 am 15.09.2026.** `[Code]` `utils/storage_claims.py`, `graph/nodes/tribunal.py::_storage_claim_step` · `tests/test_storage_claims.py` 43 Zeugen, Gegenproben 5/5, 3/3, 4/4, 1/1 · `[gemessen 15.09.2026]` am Bestand ab 14.08.: 27 Anschläge in 928 Turns — 24 Behauptungen, 3 Grenzfälle, 0 Fehlalarme (Anpassung, keine Vorhersage); echte Korrekturrunde unter `gemma4-a4b-gpu`, Lauf 3: **20 von 24** Behauptungen sauber, 0 vom Riegel übersehen; Betrieb: dauerhafter Eintrag im Messturn belegt. Davor `[gemessen 14.09.2026]` 4 von 4 Termin-Turns mit *„notiert"* oder *„fest kalibriert"* ohne Schreibung | **2 von 24** Behauptungen überstehen beide Korrekturrunden und gehen hinaus (gemeldet, nicht verhindert) · Betrieb mit einer echten Behauptung ungemessen · Deckung grob (ein Lesevorgang deckt) · **der Bestandsabgleich vor der Korrektur ist seit dem 15.09.2026 entschieden** ~~**und ungebaut**~~ → gebaut am 15.10.2026 (unten) — der Riegel fragt selbst, nicht das Thinker-Modell (`novaberg-thinking-lage_k.md`, Scheibe 12, *Offen für den Bau*); vor dem Bau zu messen, wie oft das akute Objekt eines Termin-Turns Tag und Uhrzeit gedeckt trägt · **die Behandlung des Restes ist seit dem 16.09.2026 entschieden** ~~und ungebaut~~ — nicht entfernen, sondern einen Korrektursatz anhängen, den Ausgang am Turn vermerken (der Aufrufer von `session_turn_mark_action` fehlt seit dem 23.04.2026) und einen später gefundenen Fall am Gedächtnisknoten nachtragen → **gegen den Code gehalten am 13.10.2026:** Korrektursatz gebaut am 18.09.2026 (`2eb77ed`, `utils/storage_claims.py::append_correction`), Ausgang am Turn gebaut am 18.09.2026 (`f0e3d53`, `graph/nodes/dispatcher.py::_ausgang_vermerken`); **offen bleiben** ~~**der Bestandsabgleich** (`graph/nodes/tribunal.py::_storage_claim_step` liest nur `agent_results`) **und**~~ **der Nachtrag am Gedächtnisknoten** · **15.10.2026: der Bestandsabgleich ist gebaut.** Vor der Korrektur fragt `_storage_claim_step` die Timeline mit Tag und Uhrzeit jedes akuten Objekts der Lage (`utils/storage_inventory.py`, `memory/timeline_inventory.py`); steht zu jedem ein aktiver Termin zu genau dieser Minute, kein Erinnerungs-Anker, bleibt das Urteil — kein Korrekturauftrag, kein Korrektursatz. Grenzen: minutengenau, nur Termine, jeder Zeitpunkt muss gefunden sein; eine gescheiterte Abfrage korrigiert wie bisher. Der Eintrag `speicherbehauptung` trägt neu `bestandsabgleich`, `abgleich_zeitpunkte`, `abgleich_fehler`; `ergebnis` bleibt `nicht_belegt` `[Code]` · 30 Zeugen (`tests/test_storage_inventory.py`). Vor dem Bau `[gemessen 13.10.2026]`: 16 von 24 unbelegten Behauptungen trugen ein akutes Objekt mit Tag und Uhrzeit. **🟠 bleibt:** im Betrieb noch nicht gemessen, der Nachtrag am Gedächtnisknoten offen · **16.10.2026: die Nennung ist gebaut.** Anlass `[gemessen 16.10.2026]` Simulation an einem Prüf-Nutzer: Speicherprüfung `nicht_belegt`, Bestandsabgleich `gefunden` durch einen fremden akuten Termin, keine Korrektur, die falsche Bestätigung im Kurzzeitgedächtnis (`FALSCHE-BESTAETIGUNG-WIRD-ERINNERUNG`). Jetzt muss jeder behauptende Satz einen gefundenen Termin nennen — Uhrzeit, Tag oder Inhaltswort des Titels aus dem Bestand —, sonst `gefunden_nicht_genannt` und Korrektur `[Code]` `utils/storage_inventory.py::names_appointment` · 18 Zeugen (`tests/test_storage_inventory_naming.py`), Gegenproben 3/3, 6/6, 1/1, Server-Suite 4440. **🟠 bleibt:** im Betrieb nicht gemessen · **16.10.2026, abends: die Nennung geschärft** (noch nicht committet) — ein Tag nennt nur mit Uhrzeit oder Titelwort, ein Tageswort im Satz trägt keinen Titel, die Art der Zeile (`event_type`) wird aus den Titelwörtern gekürzt, die Gegenrichtung gilt ab 7 Buchstaben `[Code]` · 35 Zeugen, Gegenproben 4/4, 5/5, 2/2 und 2/2, 3/3, 2/2, Server-Suite 4457 · **Messstand** `[gemessen 16.10.2026, 16:42–19:40 UTC]` zweite Simulation an einem frischen Prüf-Nutzer, mit dem ersten Bau: **0 falsche Bestätigungen** in 20 Sätzen (in der ersten 3), die Speicherprüfung schlug nie an, der Bestandsabgleich wurde nie befragt — der Fall trat nicht auf, weil kein älterer Termin akut war und beide Notizaufträge die Notizen erreichten; weder der Riegel noch der Router-Vorzug wurden gebraucht. **🟠 bleibt:** Bestandsabgleich und Nennung im Betrieb ungemessen, der Nachtrag am Gedächtnisknoten offen, benannte Restlücken (`novaberg-node-tribunal.md`, *Die Nennung, geschärft*) · **17.10.2026: ein Lesevorgang deckt keine Schreibbehauptung** (gebaut und getestet, noch nicht committet) — nur ein Dienst mit einem verifizierten Schritt im Verlauf deckt (`utils/storage_claims.py::write_evidence`, `WRITE_REPORTING_AGENTS` Timeline und Notizen); ein anderer Dienst ohne erkennbaren Beleg deckt wie bisher, mit einer Info-Zeile; der Eintrag trägt `geschrieben` und `nicht_erkennbar` `[Code]` · 14 Zeugen, Gegenprobe wie vorhergesagt (Unterscheidung abgeschaltet → 6 rot) · Anlass `[gemessen 16./17.10.2026]` in 2 von 3 Simulationen an Prüf-Nutzern behauptete eine Lese-Antwort *eingetragen* und galt als gedeckt · **benannte Folge:** auch eine wahre Bestätigung eines lesenden Dienstes wird korrigiert, wenn der Bestandsabgleich sie nicht findet. **🟠 bleibt:** im Betrieb nicht gemessen |
| ↳ **Scheibe 12 B — der ganze Verlauf** (Zuordnungsleser sehen Beitraege ungekappt) | 🟠 | **⚫ → 🟠 am 16.09.2026.** `[Code]` `memory/session.py::budget_wahren`, `max_chars` von 100 auf keine Vorgabe, `SESSION_HISTORY_BUDGET_CHARS = 8000` · `tests/test_verlauf_budget.py` 13 Zeugen, Suite **3794 grün, 0 übersprungen**, Gegenproben 4/5 und 5/5, harte Wand grün · `[gemessen 16.09.2026]` Nulllinie über 1494 Rohturns: 94,2 % der Antworten Novas über 100 Zeichen (Median 440), 36,8 % der Nutzer-Äußerungen; derselbe Code über 1439 Fenster alt gegen neu: **mitten abgeschnittene Beiträge 7213 → 0**, 1249 Fenster (86,8 %) vollständig, Verlaufslänge 904 → 3970 Zeichen im Mittel · `[gemessen, zweite Kontrolle]` Der Router-Prompt misst real 14.804 Zeichen im Mittel bei 32.768 Token Fenster — der größere Verlauf reißt keine Grenze | **im Betrieb nicht belegt** — kein echter Turn seit dem Bau · ~~`sachlage.py::_render_history` schneidet als achter Renderer weiter bei 1600 Zeichen~~ → behoben am 18.09.2026, ueber dem Budget fallen die aeltesten Beitraege (Fundliste 16.09.2026) |
| ↳ **Scheibe 12 C — die Anmeldung traegt ein Objekt-Merkmal** (gerechnete Naehe zu Objekten der Lage) | 🟠 | **⚫ → 🟠 am 16.09.2026 (C1).** `[Code]` `BaseAgent.objekt_merkmal`, deklariert von `TimelineAgent` und `NotizenAgent` im geeichten Wortlaut; `agents/object_feature.py::feature_vectors_ensure` bettet beim Start ein · `[Test]` `tests/test_object_feature.py`, 16 Zeugen, Suite 3810 grün, 0 übersprungen, Gegenproben 2/2 und 1/1 · `[gemessen 16.09.2026, 19:49 UTC]` Startlog am letzten Codestand, zwei Starts, je *2 von 7 Diensten am Empfang mit Vektor (Dimension 768)*; Brett des Empfangs vor und nach dem Bau zeichengleich · ~~**das Ziel ist nicht belegt:** der Vektor hat keinen Leser, Objekttext und Schwellen (C2) fehlen~~ → **C2 am selben Abend:** `agents/object_nearness.py::shadow_nearness` im Router, Urteil je akutem Objekt ins Pipeline-Log (Quelle `objekt_naehe`), kein Zustandsfeld · `[Test]` `tests/test_object_nearness.py`, 20 Zeugen, Suite 3830 grün, Gegenproben 2/2, 7/7, 1/1, 1/1 · `[gemessen 16.09.2026]` Eichreihe mit Betriebscode 33 zugestellt / 32 richtig / 27 still, exakt die Eichung; ein echter Turn schrieb den Eintrag, Bestände unverändert · **das Ziel ist weiter nicht belegt:** niemand liest das Urteil (D), **Objektwahl der Lage gebaut 16.09.2026** — Fassung C, A/C über 60 Äußerungen: Notizen am Zettel 11 → 13, Termine 25 → 26, nur falsch 1 → 0, bei einer Laufstreuung von ein bis zwei Fällen; JSON-Reparatur zerschnitt gültige Antworten, behoben · ~~und vor D ist offen, ob der Abstand zweier Merkmale als Verhältnis zweier Zettel zulässig ist~~ → **entschieden 16.09.2026: je Zettel für sich, ohne Abstand**; der Schatten rechnet die Regel (Reihe 21 nur richtig / 16 beide / 0 nur falsch / 23 still, Zahl für Zahl die Messung), Suite 3832 grün · ~~weder `BaseAgent` noch `agents/nmcp.py` kennen Objektklassen~~ `[Doku]` | Merkmal je Empfangsdienst, Naehe-Schwelle am Bestand messen, Konvention erweitern · **das Kriterium steht seit dem 16.09.2026**: Handlung oder Ereignis mit Zeitpunkt → Timeline, Sache oder Zustand mit Zeitbezug → Notizen; der heutige Weg über `needs_timeline` ist als `PLANNER-ZEITWORT-UEBERSTIMMT-DIENSTWAHL` erfasst · **die Nähe ist gemessen, bevor sie gebaut ist** `[gemessen 16.09.2026]`: über 60 Äußerungen mit Sollurteil 48 von 60 richtig (80,0 %), mit einer Schwelle von 0,04 auf den Abstand **36 von 39 entschiedenen (92,3 %)**, Wortregel zum Vergleich 73,3 %; die Klasse trennt nicht und fehlt bei 316 von 1067 Bestandsobjekten · **nachgeeicht am selben Tag: es sind zwei Schwellen** — eine Untergrenze auf die absolute Nähe (**0,40**) beantwortet, ob überhaupt ein Dienst gemeint ist, der Abstand (0,04) welcher; damit **32 von 33 zugestellten Fällen richtig (97,0 %)** bei 27 stillen, und am Bestand kommen statt 199 nur 66 von 313 Objekten durch. Merkmalstext geeicht (Verben für die Timeline, Sachen für die Notizen), auf der ungesehenen Hälfte 28 von 30 |
| ↳ **Scheibe 12 D — der Empfang liest die Lage** (`[LAGE]` im Router, Objektbezug in der Zustellung) | 🟠 | **⚫ → 🟠 am 17.09.2026 (D1).** `[Code]` `graph/nodes/planner.py::service_order_for` — Reihenfolge nach der Objekt-Nähe, nach einer Ablehnung der nächste Dienst; Zeitwort-Priorität entfernt, `PLANNER-ZEITWORT-UEBERSTIMMT-DIENSTWAHL` behoben · `[Test]` `tests/test_planner_objektwahl.py`, Suite 3869 grün, neun Gegenproben · `[gemessen 17.09.2026]` echter Router und Planner über 60 Äußerungen: Notizen zuerst richtig 7 → 13 von 13, Termine 4 → 4 · **D2 gebaut 17.09.2026:** `[LAGE]`-Block im Router, `objekt_bezug` zur Klassifikation · `[gemessen, Labor]` Zustimmungen im Router 0 → 13/14 von 24, Klassifikation 12 → 24 von 24; Suite 3885 grün · **das Ziel ist im Betrieb nicht belegt** (seit dem Umbau kein echter Router-Lauf); `ROUTE-MISS1` zur Hälfte | Block, Zustellung mit Objektbezug, Klassifikation mit Objekt-Eingabe; ~~fuer Zeitraeume fehlt der Schreiber von `event_ende`~~ → seit 18.09.2026 geschrieben (`utils/time_span.py`), und ein Auftrag mit Spanne scheitert nicht mehr am Datum; die Kette mit echten Agenten ist nicht gemessen · **16.10.2026:** unter den nahen Diensten führt der vom Router genannte, wenn ein akutes Objekt ihn erreicht (`service_order_for`, `Planner-Weiche` mit `router_vorzug=`; 11 Zeugen, Gegenproben 3/3, 4/4) — Anlass `[gemessen 16.10.2026]` Simulation an einem Prüf-Nutzer: zwei Notizaufträge gingen wegen eines akuten älteren Termins an die Timeline; im Betrieb nicht gemessen; benannte Grenze: nennt der Router fälschlich einen Dienst, den ein akutes Objekt erreicht, führt dieser · **Messstand** `[gemessen 16.10.2026, 16:42–19:40 UTC]` zweite Simulation an einem frischen Prüf-Nutzer, mit dem Bau im Dienst: beide Notizaufträge an die Notizen (Notizen 5 von 6, vorher 2 von 6), Timeline 13 von 14 wie vorher — **aber in keinem Notizsatz war ein älterer Termin akut**, die Reihenfolge war je `["notizen"]`, der Vorzug wurde nicht gebraucht; die `router_vorzug=ja`-Zeilen im Log (12-mal) stammen aus anderen Turns. **🟠 bleibt:** der Router-Vorzug ist in der Lage des Defekts im Betrieb ungemessen, ebenso seine benannte Grenze; Zustimmungen auf ein Angebot und der Objektbezug kommen in der Reihe nicht vor |
| ↳ **Scheibe 12 E — das Angebot** (Pflichtbewusstsein; Ablehnung als Eigenschaft am Objekt) | 🟠 | **⚫ → 🟠 am 17.09.2026 (E1).** `[Code]` `utils/offers.py` — ein Angebot in Novas Antwort wird als offener Punkt je Paar festgehalten (15 min); der `[LAGE]`-Block traegt den Zustimmungssatz nur bei offenem Angebot, dazu ein Riegel gegen die blanke Zustimmung. `[gemessen 17.09.2026, Betrieb]` ohne Angebot 0 Termine (vorher 1 von 1), mit Angebot 1 | ~~E2, E3~~ → **E3 gebaut 18.09.2026** (das Nein als Eigenschaft am Objekt); **E2 gebaut 18.09.2026**: Angebot ~~ab Pflicht 0,9~~ → **seit 18.09.2026, 21:41 UTC ab 0,33 mit linear steigender Wahrscheinlichkeit** (100 % bei 1,0; `labor/2026-09-18_angebot_wahrscheinlichkeit.py`), im Betrieb 2 von 2 angeboten und 2 von 2 Termine auf Zustimmung (`labor/2026-09-18_angebot_betrieb/`). **Offen:** ~~das Angebot nennt die Sache nicht selbst~~ → seit 18.09.2026, 22:13 UTC an die angebotene Sache gebunden, der Prompt verlangt den Namen — im Betrieb nicht gemessen; im Betrieb 18.09.2026, 23:23 UTC 4 von 4 Terminangebote mit Namen und *„eintragen"* (`labor/2026-09-18_angebot_wortlaut/`); ~~dem Eigentümer (Pflicht 0,614) bietet Nova nicht an~~ → dem Eigentümer (Pflicht 0,668) in 1005 von 2000 Zügen |
| ↳ **Scheibe 12 F — die Fachabteilung prueft den Bestand** (schon gespeichert?) | 🟠 | `[Doku]` Duplikat-Pruefung vor dem Anlegen beschrieben (`novaberg-agent-timeline.md` §4.4), gegen den Code nicht gehalten | **⚫ → 🟠 am 18.09.2026.** Timeline: Duplikat nur bei selbem Tag und gemeinsamem Titelwort, nie ein Erinnerungs-Anker (`agents/timeline/suche.py::find_duplicates`); vorher galt jeder Suchtreffer, auch ein Anker, und der Dienst meldete »bereits eingetragen« ohne Zeile. **Offen:** Notizen; Betriebsbeleg |
| ↳ **Scheibe 13 — die Lage und das Faktengedächtnis** (Fakten und Termine als Quellen des Frame-Auflösers, Neues über den Empfang an den Fakten-Agenten, die Neugier an einem wiederholt offenen Punkt, die Mappe als Anker der Erinnerung) | ~~🟠~~ → 🔴 (22.10.2026; bleibt 🔴 am 23.10.2026) | **24.10.2026, offen:** `SACHLAGE-SYMBOL-GILT-ALS-PLATZHALTER` (niedrig) — Fall (a) von `_is_placeholder` nimmt auch ein Symbol als ganzen Wert (`∞`, `€`, `%`) als Platzhalter `[Code]`; bleibt 🔴 · **🟠 → 🔴 am 22.10.2026:** offene Kennungen zeigen darauf — `SACHLAGE-KALENDER-VERFEHLT-OBJEKTNAMEN` (mittel, seit dem 17.10.2026; behoben im Tree `d810399`, offen bis zur Messung im Betrieb), aus der Messung am Modell `SACHLAGE-PLATZHALTER-ALS-WERT` (mittel; → 23.10.2026 behoben im Bau `sachlage_form.py::_is_placeholder` (committet als `e13261a`), am Modell vor dem Commit gemessen: Platzhalter als Wert in `gedeckt` 16 → 0; an der erfragten Eigenschaft der erfragten Person 12 von 30 danach offen, 18 weggefallen, weil die Person latent ist — `SACHLAGE-FAKTEN-PERSON-IM-OBJEKTNAMEN` —, 0 als Wert; geschlossen, im Archiv) und `SACHLAGE-FAKT-DECKT-MIT-UMSCHREIBUNG` (niedrig) · **Teil H, die Fakten, und Teil A, der Erinnerungsanker — gebaut, getestet und committet am 22.10.2026** (Code-Trees `d810399`, `0d5f633`, `04f823e`) `[Code]`: `graph/nodes/sachlage_resolver.py::fact_hits` bietet je gebundenem, akutem Objekt mit offener Eigenschaft die Fakten seiner Mappe an (`fakten#<id>`, höchstens `SACHLAGE_FAKTEN_ANGEBOT_MAX` = 8), vor den gespeicherten Eigenschaften; eine Eigenschaft mit Verweis auf einen Fakt fehlt nur, wenn genau dieser Fakt angeboten ist (Regel (c), [`novaberg-memory-fakten_e.md`](novaberg-memory-fakten_e.md) A Nr. 44), schon in der Auswahl von `memory/sachlage_properties.py::active_properties`; der Kalender im Angebot trägt höchstens `SACHLAGE_BESTAND_KALENDER_MAX` = 5 Zeilen; der Kanal `objekt_entitaeten` am Ende von `sachlage_assess`, die Suche `memory/lzg_knoten.py::knoten_zu_entitaeten` und der Knoten `graph/nodes/erinnerungsanker.py` zwischen `sachlage_node` und `router` — die Gruppe *[Fakten zu <Name>]* vor `kzg`/`lzg`, bis zu 3 neue Erinnerungen hinter der Resonanz, immer gesucht, ohne gebundene Entität der Prompt zeichengleich · `[Test]` `tests/test_sachlage_fakten_angebot.py`, `tests/test_erinnerungsanker_kanal.py`, `tests/test_erinnerungsanker_knoten.py`, Server-Suite `Ran 5174 tests` · `OK (expected failures=2)` (vorher 5104), Gegenproben je Bau wie vorhergesagt · `[gemessen 22.10.2026, am Modell des Betriebs, ohne Turn]` vor dem Commit (Code-Tree `04f823e`; 23 neue Äußerungen in fünf Gruppen × 4 Läufe, Mappe und Bindung synthetisch): der Auflöser wählt den passenden Fakt 18 von 18 Mal und greift nie fehl, der Name trifft 90 von 92, eine nur erwähnte Person ist nie akut und fehlt im Kanal (16 von 16), **die erfragte Person ist aber nur in 43 von 92 Läufen akut** (Beziehungsform 4 von 20, Kosename 5 von 20); die Sektion mit Fakten im Mittel 409 statt 218 Zeichen; `fakten` im Betrieb leer (`novaberg-thinking-lage_m.md` Scheibe 13) · **im Betrieb nicht gemessen** · **⚫ → 🟠 am 17.10.2026, abends.** `[Code]` Teil H, die Termine: `graph/nodes/sachlage_resolver.py::_calendar_hits` liest über `memory/timeline_reading.py::read_appointments`, ohne den Router; ein Zeitraum wie *November* ist ein Fenster über `graph/appointments.py::time_window`, nicht ein Objekt mit Mappe · `[Test]` 18 Zeugen in `tests/test_sachlage_calendar_reading.py`, Server-Suite 4566 → 4584 grün (2 erwartete Fehlschläge), Gegenprobe `timeline_id` entfernt: 11 rot wie vorhergesagt · `[gemessen 17.10.2026]` im Betrieb, drei Turns an einem frischen Prüf-Nutzer: **das Angebot in 3 von 3 Turns leer**, weil die Objektnamen (*Novemberereignisse*, *Zahnarzttermin*) weder Zeitraum noch Titel sind; mit passendem Namen liefert derselbe Leseweg genau die Termine von `[TERMINE]`, ohne Anker, den vergangenen gekennzeichnet (`novaberg-thinking-lage_m.md` Scheibe 13) · `[Code, 21.10.2026]` (Tree `463fa81`, nicht committet) das Fenster kommt aus dem Zeitbezug am akuten Objekt, nicht mehr aus dem Namen (`graph/nodes/sachlage_zeitbezug.py`, `_e` Nr. 36, 37): ein Zeitraum der Äußerung, dessen Wort im Namen steht, über `range_window`; ein Titel nur bei einer Frage nach dem Zeitpunkt, über `search_window` in beide Richtungen; ohne Feld kein Fenster · `[Test]` Server-Suite 4927 → 4956 grün (2 erwartete Fehlschläge), sieben Gegenproben rot wie vorhergesagt · `[gemessen 21.10.2026, am Modell des Betriebs, ohne Turn]` an der zweiten blinden Reihe 7 von 8 Feldern richtig, 0 von 8 Sätzen ohne Zeitfrage mit Feld; **im Betrieb nicht gemessen** · ~~kein Code `[Code]`: `graph/nodes/sachlage_resolver.py::memory_offer` nimmt nur KZG, LZG, Bibliothek und Kalenderzeilen~~ → ~~für die Quelle `fakten` kein Code~~ → gebaut am 22.10.2026 (oben) | ~~alles~~ → ~~die Quelle `fakten`, A, R und N~~ → R und N; für H und A die Messung im Betrieb; die erfragte Person ist am Modell zu selten akut (43 von 92), und die zwei Bugs aus der Messung sind offen; die vier Grenzen sind Startwerte; ~~die Termine im Betrieb nicht gemessen (erwartet: dasselbe wie im Block `[TERMINE]`, keiner vergangen als kommend, kein Anker)~~ → die Termine erreichen das Angebot im Betrieb nicht: `SACHLAGE-KALENDER-VERFEHLT-OBJEKTNAMEN` (mittel) → behoben im Tree (21.10.2026), ~~offen bis zum Commit~~ → committet (`250a5c1`); seit dem 22.10.2026 die Schließbedingung im Angebot bezeugt (12 Termine → 5 Zeilen, 3 → 3; Code-Tree `d810399`, committet mit Teil H); am Modell nicht gemessen, denn der Kalender der Messreihe vom 22.10.2026 war leer; offen bis zur Messung im Betrieb (*„Was steht im November an?“*, *„Wann muss ich zum Zahnarzt?“*, je mit Folgeturn) · **23.10.2026 entschieden, nicht gebaut** (`novaberg-memory-fakten_e.md` A Nr. 45): die Fakten auch für eine gebundene Person anbieten, die nur im Namen eines akuten Objekts steckt — der Engpass aus der Messung (43 von 92); vor dem Bau ein Entwurf der Architektur, Sachlage-Prompt oder Tor (Backlog `SACHLAGE-FAKTEN-PERSON-IM-OBJEKTNAMEN`) · entworfen am 17.10.2026 (`novaberg-thinking-lage_b.md` §4 Scheibe 13); braucht F1 und F2 des Faktengedächtnisses |
| **Referenz-Auflösung** (anaphorische Verweise) | ⚫ | `coreferee`, `HanTa`, `de_core_news_sm` **nicht installiert** `[gemessen]` | `REFERENZ-AUFLOESUNG-VOR-RETRIEVAL` offen |
### 6.1 Sykophanz-Eindämmung
| Bauteil | Ampel | Beleg | Rest |
|---|---|---|---|
| `B−1` Thinker protokolliert seine Weiche | 🟢 | **⚫ → 🟢 am 18.09.2026.** `thinker.schnellcheck` (Indikatoren einzeln, `needs_web`) und `thinker.ergebnis` (sechs Ausgänge samt Zählern) `[Code]` `ee7f606` · 10 Zeugen, Gegenprobe 2 rot · **im Betrieb** Turn `729033c8…`: `reasoning` → `korrektur` `[gemessen]` | — |
| `B0` Fallenbatterie (Nulllinie) | 🟠 | beide Hälften gefahren `[Doku]` | — · **🟢 → 🟠 bei der Erhebung am 20.08.2026.** **Die Erhebung am 20.08.2026 fand keinen Zeugen**: kein Test unter `tests/` traegt Fallenbatterie oder Nulllinie im Namen; die naechstliegenden sind `test_einwandsurteil.py` und `test_vorzeichenpruefung.py`, und die gehoeren zu B1 und B4. `[gemessen]` |
| `B1` Urteilsfeld vor dem Text | 🔴 | **06.11.2026, offen:** `EINWAND-KOPFBLOCK-LIEST-KEINE-WAHL` (niedrig) `[Code]`; bleibt 🔴 · `graph/einwand.py` gebaut `[Code]` — **gemessen 87 % → 87 %** `[Doku]` · **26.10.2026:** gelesen wird je Feld das erste Wort, zwei Werte der Menge in einem Feld sind der Ausfall `mehrdeutig`, jeder Ausfall trägt seinen Grund (Code-Tree `3806695`, Kennung wird nachgetragen → committet als `a6e46c2`, die Doku dazu als `b87cc49`) `[Code]`; an den 22 protokollierten Ausfällen seit dem 21.10.2026 liest der Bau 21, der Code davor 0 `[gemessen 26.10.2026]`; im Betrieb nicht gemessen | wirkt nicht; `quelle="haltung"` ist ein Wert ohne Gegenstück |
| `B4` Vorzeichenprüfung Stufe 1 | 🔴 | gebaut, **85 % blind** `[Doku]` | Stufe 2 ist nicht die Verfeinerung, sondern der Mechanismus |
| `B2`, `B3`, `B5`, `B6`, `B7` | ⚫ | kein Code `[Code]` | alles |
| `B8` Schreibpfad (keine Destillation ohne Marke) | ⚫ | kein Code `[Code]` | alles |
| `B9` Register der Widersprüche | ⚫ | kein Code `[Code]` | alles |
---
## 7. Agenten
### 7.1 Die Anmeldung (NMCP)
| Feature | Ampel | Beleg | Rest |
|---|---|---|---|
| **NMCP-Handshake beim Start** | 🟢 | **20 geprueft, 20 eingebunden, 0 verweigert, 13 ohne Zweifelsfaelle** `[gemessen, 19.09.]` · `[Code]` — `agents/nmcp.py`, `anmelden()` mit vier Ausgaengen; der Grad haengt an der Form des Dienstnamens (`:74`, `:78`) | **🟢 seit 21.08.2026** (🔴 vom 20.08. bis 21.08.): `AUSSCHLUSSRIEGEL-TRIFFT-SACHWORT` ist gegen HEAD `62560cf` als behoben belegt |
| **Zuschnitt des Zustands auf die Anmeldung** | 🟢 | `agents/nmcp.py` `[Code]` | — |
| **Quotenabgleich** (angemeldet gegen gezählt) | 🟠 | Job im Scheduler, `NMCP_ABGLEICH_INTERVALL` `[Code]` · alle Zähler auf null, `gemessen: null` bei 9 von 9 Einträgen `[gemessen, 19.09.]` | braucht 30–100 Äußerungen je Dienst **ohne Neustart** — die Zähler leben im Prozessspeicher, und der Prozess startet 63–141-mal am Tag (Fundliste 19.09.2026). **Noch kein Urteil, und in dieser Bauart keins zu erwarten** |
| **Vierter Ausgang** (`abgelehnt` = Zweifelsfall) | 🟠 | **7 von 20 Diensten** melden ihn an `[gemessen, 19.09.]` · `[Code]` — `agents/nmcp.py` Zeile 489, `if "abgelehnt" not in agent.ausgaenge` | für die 13 Dienste ohne ihn, alle im Hintergrund, ist der Grad „eingeschränkt" eine Aussage **ohne Wirkung** |
| **Selbstauskunft der Dienste** (`beschreibungen()`) | 🔴 | 15 Anmeldungen, **kein Produktivaufrufer** `[gemessen, 18.08.]` · `[Code]` — genau **eine** `def beschreibungen`-Stelle im Baum, gezaehlt am 20.08.2026 `[gemessen]` | `SELBSTAUSKUNFT-OHNE-LESER` |
| **Grenze** (`grenze`-Eigenschaft) | 🔴 | **5 Deklaranten, 0 Leser** `[gemessen]` | Ablageort entscheiden: Brett oder vierter Ausgang |
| **Audit-Pflicht** (`hintergrund_log`) | 🟠 | **Am 18.09.2026 gebaut:** eine Senke `memory/background_audit.write_audit` statt **neun** Kopien (die Zeile nannte fünf), und ein **Rahmen im Pixie-Dispatch** für jeden Agenten ohne eigenes Audit (`BaseAgent.writes_own_audit`) `[Code]` `ac86792` · 13 Zeugen, darunter die Deklaration gegen den Code je Agent · **im Betrieb** `[gemessen]`: `wissen_rueckweg`, bis dahin ohne jede Zeile, mit 3× `gestartet`/`erledigt` ab 07:57 UTC · **Am Abend umgebaut nach der Entscheidung zu NMCP §7** (`80d4b37`): **jeder Dienst schreibt sein Audit selbst**, der Dispatch nur noch `fehler`, wenn der Dienst schweigt; die Selbstauskunft `writes_own_audit` ist entfallen; ein Zeuge verlangt von jedem Dienst, den Pixie routet, ein eigenes `gestartet`. **Im Betrieb** `[gemessen]` 23:24 UTC: `synapsen_promotion` belegt seinen ganzen Lauf, `promotet=12` | ~~**Bleibt 🔴:** `RECHERCHE-OHNE-AUDIT` offen bis zum Betriebsbeleg eines Recherchelaufs (`aufgabe = 'recherche'`) · `wiedervorlage` und `wissensluecken` im Betrieb noch nicht gesehen~~ → **🔴 → 🟠 am 05.10.2026, alle drei im Betrieb gezählt** (`hintergrund_log`, nur Zahlen): `recherche` 7 `gestartet` gegen 6 Abschlüsse (03.10.2026), `wiedervorlage` 26/26, `wissensluecken` 36/36. **Nicht 🟢:** Ein Recherchelauf (03.10.2026, 11:58:35 UTC) blieb ohne Abschlusszeile (Fundliste 05.10.2026) · `wissen`, `dateien`, `dateien_wurzeln` laufen nie über Pixie und sind kein Hintergrundlauf |
### 7.2 Die Agenten des Menschen
| Agent | Ampel | Beleg | Rest |
|---|---|---|---|
| **NotizenAgent** (CRUD, pg_trgm) | 🔴 | **08.11.2026: ein Nein auf die Frage nach einer nicht gefundenen Notiz endet als `dismissed`** — `_nach_resume` beendet den Graphen, der Wartezustand ist gelöscht, `_build_return` trägt den Text ins `pipeline_log`; Code-Tree `33a7b83`, Kennung wird nachgetragen; Zeugen `NotesGateTest` in `tests/test_gate_refusal.py`, Server-Suite am Tree `d5163ed` `Ran 5630 tests` · `OK (expected failures=2)` `[Code]` · vor dem Commit an einer Wegwerf-Datenbank gemessen: *„nein“* `dismissed` samt Text, die Notizen unverändert `[gemessen 08.11.2026]`; `TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` geschlossen; bleibt 🔴 · **06.11.2026, offen:** `NOTIZ-SUCHTEXT-HINKT-NACH` (mittel) — `suchtext` trägt die vorige Zusammenfassung `[Code]`; `REPOSITORY-KENNUNG-OHNE-MENSCH` (niedrig), `KLASSIFIKATION-UNBEKANNTE-AKTION-WIRD-READ` (niedrig) und `MODELLFELD-UNGEPRUEFT-GELESEN` (mittel) zeigen ebenfalls hierher `[Code]`; bleibt 🔴 · **26.10.2026, später — die Antwort des Modells wird geprüft gelesen** `[Code]`, Code-Tree `9c1df7a` (Kennung wird nachgetragen → committet als `b03db21`, die Doku dazu als `de16bea`): `agents/notizen/klassifikation.py::_read_answer`/`_read_text_fields` — `null` wie ein fehlender Schlüssel, ein Feld falschen Typs (`feld_falscher_typ`) und eine Antwort ohne Objekt (`kein_objekt`) enden laut in `klassifizieren` statt mit `TypeError` im Dispatch; Zeugen `tests/test_classification_null_field.py` (Untergrenze 6 Zugriffe), Server-Suite `Ran 5503 tests` · `OK (expected failures=2)`; vor dem Commit am Modell an einer Rückhaltereihe 0 × `null`, Ergebnis 48 von 48 gleich der Nulllinie `[gemessen 26.10.2026]`; `KLASSIFIKATION-NULL-FELD-WIRFT` geschlossen (Archiv, [`novaberg-bugs-archiv-bauart.md`](novaberg-bugs-archiv-bauart.md)); im Betrieb nicht gemessen · **26.10.2026, später — jede Kennung an den Menschen gebunden** `[Code]`, Code-Tree `30b81af` (Kennung wird nachgetragen → committet als `89bcba8`, die Doku dazu als `64ba8dd`): `agents/notizen/crud.py` liest und schreibt über eine Kennung nur mit `WHERE id = %s AND user_id = %s` (`_read_by_id`, ein geschlossener Satz Schreibungen `_SCHREIBUNGEN` über `_notiz_schreiben`, der die Zahl der getroffenen Zeilen zurückgibt), ein Schreibweg ohne genau eine getroffene Zeile endet laut (`fehler`, `keine_zeile`), kein `NotizenRepository.update` mehr; Zeugen `tests/test_write_path_binding.py` (fremde Kennung gegen eigene je Weg, Kriterium über jede Bedingung), Server-Suite `Ran 5473 tests` · `OK (expected failures=2)`; `SCHREIBWEG-KENNUNG-OHNE-MENSCH` geschlossen (Archiv, [`novaberg-bugs-archiv-wissen.md`](novaberg-bugs-archiv-wissen.md)); ~~im Betrieb nicht gemessen~~ → im Betrieb gemessen über die Funktion `[gemessen 26.10.2026]`: an zwei Prüf-Nutzern treffen die fünf schreibenden Wege mit der Kennung des anderen 0 Zeilen und enden laut, mit der eigenen 1, jede Abfrage trug `user_id` (20 von 20 Schritten der Notizen); **bleibt 🔴** mit ~~`TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` und~~ `NOTIZ-VERNEINUNG-UEBERLESEN` (→ der erste geschlossen 08.11.2026) · **26.10.2026, im Betrieb gemessen über den echten Weg** `[gemessen 26.10.2026]`: An einem Prüf-Nutzer legt *„Wie bitte?“* auf die Frage nach einer nicht gefundenen Notiz nichts an und erneuert die Frage, *„Nein“* schließt; `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG` geschlossen (Archiv, [`novaberg-bugs-archiv-charakter.md`](novaberg-bugs-archiv-charakter.md)); im Schritt *„Wie bitte?“* brach der Graph an der Rekursionsgrenze ab, der Zustand stimmte (Fundliste, 26.10.2026). **Bleibt 🔴:** ~~`TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` und~~ `NOTIZ-VERNEINUNG-UEBERLESEN` offen (→ der erste geschlossen 08.11.2026) · **24.10.2026, behoben im Code-Tree `f901e08`** `[Code]` (Kennung wird nachgetragen → committet als `e1e0724`, die Doku dazu als `d2d6ec8`), **offen bis zur MESSUNG im Betrieb:** `agents/notizen/resume.py::_resume_nicht_gefunden` führt eine Antwort nur aus, wenn sie aus Zustimmung besteht — Wörter (Zustimmungs- und Füllwörter, *na*, *nun*, *also* nie), Zeichen (`DROPPED_SIGNS`) und Wortstellung (`ASKING_VERBS` vor `SUBJECT_WORDS`) geschlossen, die Ablehnung zuerst; *„Wie bitte?“* auf *„… soll ich anlegen?“* legt nichts an; Zeugen `ClosedConsentTest`, `ClosedSignsTest`, `RefusalFirstTest`, `ExcludedWordsTest`, `WordOrderTest`, `ClauseSeparatorsTest` in `tests/agents/notizen/test_resume.py`; Server-Suite `Ran 5394 tests` · `OK (expected failures=2)`; vor dem Commit an 305 ungezeigten Antworten 0 Fehlausführungen, Nachprobe der Wortstellung 14 von 14 unklar `[gemessen 24.10.2026]` · **24.10.2026, offen** (der Stand davor): `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG` (hoch) — auf *„… existiert nicht, soll ich anlegen?“* legt *„Wie bitte?“* die Notiz an `[Code]`; `TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` (mittel) — die Ablehnung derselben Frage endet mit `abgeschlossen` statt `dismissed` `[Code]`; bleibt 🔴 · **Offen seit 20.10.2026:** `NOTIZ-VERNEINUNG-UEBERLESEN` · 1 Zeile in `notizen` `[gemessen]` · `[gemessen 16.10.2026]` Simulation an einem Prüf-Nutzer: Notizen 2 von 6 (vor den Timeline-Bauten 6 von 6) — beide Notizaufträge ohne Zeitangabe gingen an die Timeline, weil ein älterer akuter Termin ihr näher stand (0,5282 gegen 0,4391), und die Timeline gab nach `fehler` nicht weiter · `[Code]` seit 16.10.2026 `graph/nodes/planner.py::service_order_for`: der vom Router genannte Dienst führt unter den nahen, 11 Zeugen in `tests/test_planner_objektwahl.py`, Server-Suite 4422 · `[gemessen 16.10.2026, 16:42–19:40 UTC]` zweite Simulation an einem frischen Prüf-Nutzer, mit dem Bau im Dienst: **Notizen 5 von 6** — beide Notizaufträge an die Notizen, aber ohne einen älteren akuten Termin, Reihenfolge je `["notizen"]`: der Router-Vorzug wurde nicht gebraucht; der erste legte an, aber unter dem Namen *„Neue Notiz“*, der zweite endete in einer Rückfrage wegen der gleichnamigen Notiz und legte nichts an (`NOTIZ-BEFEHL-ALS-TITEL`, damit in zwei Simulationen belegt) · `[Code]` seit `914217c` (16.10.2026) heißt eine Notiz ohne genannten Namen nach ihrem Inhalt — ein Name gilt nur mit Beleg (genannt, Anfang des Inhalts oder ein geteiltes Inhaltswort ab 4 Zeichen), sonst die ersten höchstens 5 Wörter des Inhalts; 21 Zeugen · `[gemessen 17.10.2026]` Simulation `simnachher3` an einem frischen Prüf-Nutzer: **Notizen 8 von 8**, Namen *Ersatzschlüssel*, *Druckerpapier*, *Zweitschlüssel fürs Auto*, *Die Gießkanne*, keine Rückfrage, keine erfundene Notiz; alle Notizaufträge an die Notizen · `[Code]` seit Tree `9153022` (18.10.2026) liest die Rückfrage *„… Soll ich sie anlegen?“* die Ablehnung zuerst — bis dahin prüfte `_resume_nicht_gefunden` die Zustimmung zuerst, und *„nein, bitte nicht“* legte die Notiz an; die Wahl unter Kandidaten trifft Namen, Positionen und IDs nur als ganze Wörter · `[gemessen 18.10.2026]` an der Deutung: von 41 Antwortformen gehen 20 von Anlegen zu Ablehnung, *meinetwegen* von Ablehnung zu Anlegen | ~~sechs~~ → fünf offene Bugs: Container-Wechsel, Kontext-Rekonstruktion, Skill-Manifest, leeres UPDATE-Ziel, ~~Befehl als Titel~~ → behoben und gemessen am 17.10.2026 (`NOTIZ-BEFEHL-ALS-TITEL` im Archiv) · **🔴 seit 20.08.2026** (zuvor 🟠): `NOTIZAUFTRAG-GEHT-AN-TIMELINE` offen — **Stand 16.10.2026:** 2 von 2 gemessen, Mechanismus belegt, gebaut; offen bis zur Messung an einem frischen Prüf-Nutzer, 🔴 bleibt bis dahin · **abends:** die zweite Simulation erzeugte die Lage des Defekts nicht, der Vorzug ist dort ungemessen; dazu `NOTIZ-BEFEHL-ALS-TITEL` belegt (Abhilfe im Bau) · **17.10.2026:** `NOTIZAUFTRAG-GEHT-AN-TIMELINE` bleibt offen — auch in der dritten Simulation trat die Lage des Defekts nicht auf (die Sachlage hielt den Termin nicht akut); 🔴 bleibt, auch wegen der übrigen offenen Bugs · **18.10.2026:** die Ja/Nein-Deutung der Rückfrage behoben (`ZUSTIMMUNG-GILT-ALS-ABLEHNUNG` im Archiv); offen als Fund: die Verneinung bei *neu*, *aktualisieren* und bei der Wahl wird nicht gelesen (*„nein, keine neue“* legt an, Fundliste 18.10.2026); 🔴 bleibt |
| **TimelineAgent** (bi-temporal, ZeitVektor) | 🔴 | **06.11.2026, offen:** `REPOSITORY-KENNUNG-OHNE-MENSCH` (niedrig) und `KLASSIFIKATION-UNBEKANNTE-AKTION-WIRD-READ` (niedrig) `[Code]`; bleibt 🔴 · **26.10.2026, später — die Antwort des Modells wird geprüft gelesen** `[Code]`, Code-Tree `9c1df7a` (Kennung wird nachgetragen → committet als `b03db21`, die Doku dazu als `de16bea`): `agents/timeline/klassifikation.py::_read_answer`/`_read_text_fields` — `null` wie ein fehlender Schlüssel, ein Feld falschen Typs (`feld_falscher_typ`) und eine Antwort ohne Objekt (`kein_objekt`) enden laut in `klassifizieren` statt mit `TypeError` im Dispatch; Zeugen `tests/test_classification_null_field.py` (Untergrenze 6 Zugriffe), Server-Suite `Ran 5503 tests` · `OK (expected failures=2)`; vor dem Commit am Modell an einer Rückhaltereihe 0 × `null`, Ergebnis 48 von 48 gleich der Nulllinie `[gemessen 26.10.2026]`; `KLASSIFIKATION-NULL-FELD-WIRFT` geschlossen (Archiv, [`novaberg-bugs-archiv-bauart.md`](novaberg-bugs-archiv-bauart.md)); im Betrieb nicht gemessen · **24.10.2026, offen:** `VERSCHIEBEN-TAGESZEIT-WIDERSPRICHT-STUNDE` (niedrig, wartet auf eine Absicht) — *„auf 1 Uhr abends“* schreibt 13:00 `[Code]`, nachgestellt `[gemessen 24.10.2026]`; `VERSCHIEBEN-RUECKFRAGE-NENNT-FALSCHEN-GRUND` (niedrig) — `keine_eindeutige_zeit` und `kein_datum` nennen einen Grund, der nicht zutrifft, und keine Lesarten; `ZEIT-TAG-AN-TEILWORT-ERKANNT` (mittel) — die Lesart *morgens*, die die Rückfrage nach der Tageshälfte anbietet, schreibt als Antwort nicht `[Code]`; bleibt 🔴 · **61 Einträge** `[gemessen]` — aber der **Lesepfad ist instabil**: Nova verneinte einen aktiven Termin `[gemessen, 17.08.]` · **22.10.2026, am Code geprüft:** `TIMELINE-CLIPBOARD-OHNE-ID` offen `[Code]` — ~~nach einem Schreibauftrag wird `timeline_id` nie gesetzt, weil die Kennung im Schritt von `bestaetigen` gesucht wird~~ → behoben im Code-Tree `4d68f6e` (23.10.2026): `_build_return` liest die Kennung aus dem Schritt von `ausfuehren`, der eine Zeile schrieb; ~~im Betrieb nicht gemessen, offen bis dahin~~ → committet als `4b5b3c8`, `[gemessen 23.10.2026]` im Betrieb, im Archiv; `TIMELINE-KONFIDENZ-OHNE-LESER` offen `[Code]` — die Konfidenz der Klassifikation liest kein Weg, eine niedrige Konfidenz oder ein Konflikt führt nicht zur Rückfrage (`novaberg-agent-timeline.md` §7.3, §10) | eine ausgebliebene Zustellung ist von einer richtigen Auskunft nicht zu unterscheiden · `TIMELINE-LESEPFAD-INSTABIL` offen (Erhebung 20.08.2026) · ~~**01.09.2026 dazu: der Schreibpfad meldete dreimal `fehler` und die Antwort meldete dreimal Erfolg**~~ → **am selben Tag behoben und im Betrieb belegt** `[gemessen, 01.09. 19:26]`: bei `status=fehler` nennt die Antwort den Fehlschlag und reicht die Rueckfrage weiter (synthetischer Messturn), `timeline` 83 → 83 Zeilen · **14.09.2026: eingetragen wird nur auf Auftrag** — Aushang, Negativfall und Vorpruefung verlangen ihn; `[gemessen 14.09.2026, gemma4-a4b-gpu]` Auftraege schreiben 12/12, Aussagen 0/21 bis zur Klassifikation, `tests/test_timeline_aushang.py` 8 Zeugen (zwei nach der zweiten Kontrolle), Suite 3671 gruen (`novaberg-agent-timeline.md` §3a) · **neu rot:** `update` kann nur verschieben, `event_ende` hat keinen Schreiber — eine Dauer ist nicht speicherbar `[gemessen 13.09.2026]` (Fundliste) · `TIMELINE-SCHREIBT-OHNE-AUFTRAG` halb erfuellt (Wochentagsname unausgefuehrt) · **Betrieb 14.09.2026, 19:16 UTC: der erste ausdrueckliche Auftrag schrieb, mit falscher Zeit** — *„morgen um 10"* ohne „Uhr" wird nicht als Uhrzeit erkannt `[gemessen]` (Fundliste) · **15.10.2026, gebaut und getestet** `[Code]`: Der Turn liest die gefragten Termine hinter dem Router (`graph/base.py::_node_route` → `memory/timeline_reading.py`), der Verfasser bekommt sie im eigenen Block `[TERMINE]` mit gelesenem Zeitraum, Bezug zu heute und ausdrücklichem *keine Termine vom … bis …*; bei `forward` fehlen abgelaufene (Fassung c); ein Erinnerungs-Anker ist in keinem Leseweg ein Termin, auch nicht beim `read` des Agenten (`suche.py`). Verschieben mit einer Uhrzeit allein behält den Tag, *„von X auf Y“* nimmt Y, ein Tag allein behält die Uhrzeit (~~`ZeitVektor.clock_time`~~ → **Endstand 16.10.2026:** geschrieben wird nur, wenn die Lesung `read_time` und die Positivform `raw_time_form` auf dem Rohtext dieselbe Uhrzeit ergeben; außerhalb der fünf Formen und bei jedem nicht zugelassenen Wort die Rückfrage; `ZeitVektor` unverändert — `crud.py::_update`, `novaberg-agent-timeline.md` §5.2). Zeugen 49 + ~~31~~ → 75, Suite ~~4371~~ → 4411 grün. **Nulllinie am Code vor dem Bau** `[gemessen 15.10.2026, Prüf-Nutzer, labor/2026-10-15_sim_timeline_notizen.py]`: Lesen 6/7 (ein Termin im November lag außerhalb des proaktiven Fensters), Lesefragen ohne Merkmal 1/3, Verschieben nur mit Uhrzeit 0/1, auf einen Tag 1/1, Schreiben ausdrücklich 1/1; am Bestand (60 Tage) Timeline gelesen in 7 von 23 Nutzer-Turns mit *Termin*. **Bleibt 🔴:** `TIMELINE-LESEPFAD-INSTABIL` und `TIMELINE-NENNT-ABGELAUFENEN-TERMIN-ALS-KOMMENDEN` sind im Code behoben und schließen erst mit der Messung nach dem Commit · ein Datenpunkt der Nulllinie gegen den Eintrag vom 01.09.: der Agent endete mit `fehler`, die Antwort sagte es nicht — ob der Aufgabenblock im Prompt stand, ist ungemessen (Fundliste 15.10.2026) · **17.10.2026, gebaut und getestet, noch nicht committet** `[Code]`: Der Leseast liest über `read_appointments` und schreibt die Zeilen von `appointment_line` — ohne Anker, mit Bezug zu heute, wie der Block `[TERMINE]`; ein genannter Zeitraum ist ein Fenster über den ganzen Zeitraum (Zeile darunter); **Ändern, Löschen und Verschieben über einen Zeitraum ohne Titel schreiben nie** — bei 0, 1 und mehreren Treffern eine Klärung, die die Termine nennt und um den Namen bittet, und keine Antwort darauf schreibt; keine Antwort auf eine Auswahl schreibt, mit oder ohne Titel, und Verschieben mit Titel und mehreren Treffern geht in die Auswahl, statt still den ersten zu nehmen; der Leseschritt hinter dem Router ist die Knotenfunktion `graph/nodes/route_reading.py::read_after_route`; die Positivform des Verschiebens liegt in `agents/timeline/positive_form.py` (`novaberg-agent-timeline.md` §4, §4.5, §4a, §5.2). Server-Suite 4478 → 4566. **Entschieden am 17.10.2026:** keine Erinnerung zusagen (geplant als offene Punkte der Pixie, `PIXIE-OFFENE-PUNKTE`), nachfragen bei einem erwähnten kommenden Termin, eine Tageszeit allein ist beim Verschieben eine Rückfrage (gebaut seit `bb90247`), eine nackte Stunde bis 12 ebenso — ~~**nicht gebaut**~~ → gebaut am 24.10.2026 (`VERSCHIEBEN-NACKTE-STUNDE-OHNE-TAGESHAELFTE`, im Archiv; unten). **Bleibt 🔴:** dazu `ZEITRAUM-LIEST-EINEN-TAG` (gebaut, offen bis zur Messung), `VERSCHIEBEN-NACKTE-STUNDE-OHNE-TAGESHAELFTE` (~~offen~~ → geschlossen am 24.10.2026) und `TIMELINE-TITEL-MEHRERE-TREFFER-OHNE-TAG` (gleichnamige Termine ohne einen einzigen kommenden lassen sich nicht einzeln ändern, sicher) · `[gemessen 17.10.2026]` Simulation `simnachher3` an einem Prüf-Nutzer, vor dem Umbau: Timeline 10 von 13 bewertet — falsch die Frage nach dem November über den Agenten (gebaut), die Frage nach dem letzten Friseurtermin ohne Agent (`TIMELINE-LESEPFAD-INSTABIL`) und eine Lese-Antwort mit Schreibbehauptung (gebaut) · **17.10.2026, später:** `TIMELINE-VERWEIS-VERALTET-BEIM-VERSCHIEBEN` neu — ein Verweis aus `lzg_knoten`, `sachlage_eigenschaft` oder `notizen` bleibt beim Verschieben an der inaktiven Zeile; im Bestand noch ohne Fall `[gemessen 17.10.2026]` · **17.10.2026, abends** `[Code]`: `time_window` liegt in `graph/appointments.py`, verhaltensgleich umgezogen; das Angebot der Sachlage liest über denselben Leseweg (`read_appointments`) und dasselbe Fenster; `Appointment` trägt die Kennung der Zeile (`timeline_id`). Server-Suite 4566 → 4584 grün; im Betrieb nicht gemessen · **21.10.2026, gebaut und getestet,** ~~nicht committet~~ → **committet als `2cfe1b0`, die DDL angewandt** `[Code]`: Der Agent liest und schreibt im Paar aus Mensch und Figur, ohne Figur `status: fehler` (↳ *S7* unter *Faktengedächtnis*); die Zeile bleibt 🔴 · **21.10.2026, 20:11 UTC, gebaut und getestet,** ~~nicht committet~~ → **committet als `091a99d`** `[Code]`: Verschieben ist ein Schritt in einer Transaktion — die alte Zeile zeigt über `nachfolger_id` auf die neue, scheitert etwas, bleibt sie aktiv; die Typen kommen aus `memory/timeline_types.py`, ein unbekannter Typ schreibt nichts (`status: fehler`) (↳ *F6* unter *Faktengedächtnis*); die Zeile bleibt 🔴 · **22.10.2026** `[Code]`: Das Ereignis einer anderen Person schreibt über der Grenze der passive Dienst `agents/timeline/ereignis.py`, nicht der Agent (↳ *F6*); die Zeile bleibt 🔴 · **24.10.2026, gebaut** (Code-Tree `3e1bb3f`, Kennung wird nachgetragen → committet als `408eebb`) und `[gemessen 24.10.2026]` am Modell vor dem Commit: Beim Verschieben fragt eine Stunde von 1 bis 12 ohne Tageszeit nach der Tageshälfte (Ausgang `tageshaelfte_offen`, Titel und beide Lesarten), eine Tageszeit an der Stunde schreibt (*„4 Uhr nachmittags“*, *„nachmittags um 4“*, *„6 Uhr früh“*), 0 und 13 bis 23 schreiben wie bisher, und ein Tag, den keine Form nennt, wird nicht geschrieben (*„4 Uhr morgens“* fragt) — für `update` und `reschedule`. 19 Sätze × 2 Läufe, **38 von 38 wie erwartet**, kein fremder Tag (`labor/2026-10-24_stunde_messung_ergebnis.md`); `HalfOfDayTest` 20 Zeugen, Server-Suite `Ran 5230 tests` grün, Gegenprobe wie vorhergesagt (`novaberg-agent-timeline.md` §5.2). `VERSCHIEBEN-NACKTE-STUNDE-OHNE-TAGESHAELFTE` im Archiv. **Die Zeile bleibt 🔴:** offen zeigen weiter unter anderem `TIMELINE-LESEPFAD-INSTABIL`, `TIMELINE-KONFIDENZ-OHNE-LESER`, `ZEITRAUM-LIEST-EINEN-TAG`, `TIMELINE-TITEL-MEHRERE-TREFFER-OHNE-TAG` und `TIMELINE-VERWEIS-VERALTET-BEIM-VERSCHIEBEN` darauf |
| ↳ **Lesen nach Zeitraum** (*im November*, *diese Woche*, *am Wochenende*, *in zwei Wochen*) | 🟠 | **neu am 17.10.2026, ⚫ → 🟠** `[Code]` `utils/zeitparser.py::named_period` — eine Dekodierung aller Zeiträume, ein Monatsname ohne Präfix ist der des laufenden Jahres, das Wochenende Samstag und Sonntag, ein Tag bleibt ein Tag; ~~`agents/timeline/suche.py::time_window`~~ → seit 17.10.2026, abends, `graph/appointments.py::time_window` (verhaltensgleich umgezogen, dasselbe Fenster für das Angebot der Sachlage; `SameWindowTest` in `tests/test_sachlage_calendar_reading.py`) liest damit das ganze Fenster · `[Test]` `tests/test_timeline_agent_reading.py` 52, davon 1 erwarteter Fehlschlag (13 für die Zeiträume), Gegenprobe wie vorhergesagt · Anlass `[gemessen 17.10.2026]` Simulation an einem Prüf-Nutzer: die Frage nach dem November las einen Tag und verneinte einen Termin am 06.11. (`ZEITRAUM-LIEST-EINEN-TAG`) | gebaut, ~~noch nicht committet~~ → committet mit `c0eecbb`; im Betrieb nicht gemessen; das Wochenende ist entschieden am 17.10.2026 (das nächst anstehende binnen 1 bis 7 Tagen, im Zweifel nachfragen) — am Samstag und Sonntag liest der Bau das laufende und fragt nicht nach, die Rückfrage kommt mit den Klärfällen |
| **DirektivenAgent** (HITL-Gate) | 🔴 | **08.11.2026: ein Nein am Tor endet als `dismissed`** — `read_answer` setzt den Status des Kanons, `_build_return` trägt den Text ins `pipeline_log`; Code-Tree `33a7b83`, Kennung wird nachgetragen; Zeugen `DirectiveGateTest` in `tests/test_gate_refusal.py`, Server-Suite am Tree `d5163ed` `Ran 5630 tests` · `OK (expected failures=2)` `[Code]` · vor dem Commit an einer Wegwerf-Datenbank gemessen: 2 von 2 *„nein“* `dismissed` samt Text, die Direktiven unverändert; *„ja“* mit gesätem Ziel löscht und endet `abgeschlossen` `[gemessen 08.11.2026]`; `TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` geschlossen; bleibt 🔴 · **06.11.2026, offen:** `KLASSIFIKATION-UNBEKANNTE-AKTION-WIRD-READ` (niedrig) `[Code]`; bleibt 🔴 · **26.10.2026, später — die Antwort des Modells wird geprüft gelesen** `[Code]`, Code-Tree `9c1df7a` (Kennung wird nachgetragen → committet als `b03db21`, die Doku dazu als `de16bea`): `agents/direktiven/klassifikation.py::_read_answer`/`_read_text_fields` — `null` wie ein fehlender Schlüssel, ein Feld falschen Typs (`feld_falscher_typ`) und eine Antwort ohne Objekt (`kein_objekt`) enden laut in `klassifizieren` statt mit `TypeError` im Dispatch; Zeugen `tests/test_classification_null_field.py` (Untergrenze 7 Zugriffe), Server-Suite `Ran 5503 tests` · `OK (expected failures=2)`; vor dem Commit am Modell 54 von 54 Bitten ohne Ausfall, vorher 50 `[gemessen 25.10.2026]`; `KLASSIFIKATION-NULL-FELD-WIRFT` geschlossen (Archiv, [`novaberg-bugs-archiv-bauart.md`](novaberg-bugs-archiv-bauart.md)); im Betrieb nicht gemessen · **26.10.2026, im Betrieb gemessen über den echten Weg** `[gemessen 26.10.2026]`, an einem Prüf-Nutzer, 9 von 9 Schritten wie Soll: Die Bitte zum Löschen einer frischen Direktive erreicht die Pflicht-Rückfrage mit der richtigen Kennung; *„Wie bitte?“* und *„ist das ok“* erneuern sie, *„Nein“* löscht nicht, *„ja“* löscht; 0 Fehlerzeilen. `DIREKTIVEN-KENNUNG-UNGEPRUEFT`, `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` und `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG` geschlossen (Archiv, [`novaberg-bugs-archiv-charakter.md`](novaberg-bugs-archiv-charakter.md)). **Bleibt 🔴:** ~~`TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` (mittel),~~ → geschlossen 08.11.2026; `DIREKTIVEN-AUSWAHLFRAGE-OHNE-LESER` und `DIREKTIVEN-RUECKFRAGE-OHNE-ZIEL` (niedrig) offen · **25.10.2026, Kennung geprüft gelesen und an den Menschen gebunden, behoben im Code-Tree `2876b85`** `[Code]` (~~nicht committet~~ → committet als `236edec`), **offen bis zur MESSUNG im Betrieb:** `klassifikation.py::_read_target_id` liest `target_id` nur als Ganzzahl größer 0 oder als Schreibweise der Liste (*„13“*, *„[13]“*), jeder andere Wert endet laut (`kennung_unlesbar`); `crud.py` nimmt eine Kennung nur für eine Zeile dieses Menschen im passenden Zustand an, `user_id` steht in der Bedingung von Lesen und Schreiben, ein Schreibweg ohne getroffene Zeile endet laut (`keine_zeile`); Zeugen in `server/tests/test_target_id_ownership.py`; Server-Suite `Ran 5421 tests` · `OK (expected failures=2)` `[Code]`; vor dem Commit am Modell 54 Bitten durch beide Dienste: 0 Werte ungeprüft weitergegeben, 34 von 34 gelesenen Kennungen gleich der gemeinten, `"[n]"` 12 mal `[gemessen 25.10.2026]` — `DIREKTIVEN-KENNUNG-UNGEPRUEFT` bleibt offen, **keine Ampel wechselt** · **24.10.2026, behoben im Code-Tree `f901e08`** `[Code]` (Kennung wird nachgetragen → committet als `e1e0724`, die Doku dazu als `d2d6ec8`), **offen bis zur MESSUNG im Betrieb:** `agents/direktiven/resume.py::_reading` führt eine Antwort nur aus, wenn sie aus Zustimmung besteht — Wörter (Zustimmungs- und Füllwörter, *na*, *nun*, *also* nie), Zeichen (`DROPPED_SIGNS`) und Wortstellung (`ASKING_VERBS` vor `SUBJECT_WORDS`) geschlossen, die Ablehnung zuerst; *„Sekündchen, bitte“*, *„Ja, später“* und *„Wie bitte!“* löschen nicht mehr, `WAIT_STEMS` und `_holds_back` entfallen, ~~*„ja, vergiss es“* löscht~~ → unklar; Zeugen `ClosedConsentTest`, `ClosedSignsTest`, `RefusalFirstTest`, `ExcludedWordsTest`, `WordOrderTest`, `ClauseSeparatorsTest` in `tests/agents/direktiven/test_resume.py`; Server-Suite `Ran 5394 tests` · `OK (expected failures=2)`; vor dem Commit an 305 ungezeigten Antworten 0 Fehlausführungen, Nachprobe der Wortstellung 14 von 14 unklar `[gemessen 24.10.2026]` · **24.10.2026, offen** (der Stand davor): `ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG` (hoch) — Formen der Zurückhaltung ohne `?` und ohne Stamm des Wartens führen aus (*„Sekündchen, bitte“*, *„Ja, später“*, *„Wie bitte!“*) `[Code]`; `TOR-ABLEHNUNG-MELDET-ABGESCHLOSSEN` (mittel) — eine Ablehnung steht im `pipeline_log` als `abgeschlossen`; `DIREKTIVEN-AUSWAHLFRAGE-OHNE-LESER` (niedrig) — eine Auswahlfrage liest keine Wahl und fragt erneut; `DIREKTIVEN-RUECKFRAGE-OHNE-ZIEL` (niedrig) — ohne Kennung nennt die Pflicht-Rückfrage *„(ID None)“*, das Ziel wird erst nach der Zustimmung bestimmt; bleibt 🔴 · **12 Direktiven** `[gemessen]` · `[Code]` mit `resume` geht der Graph ohne Deutung der Antwort nach `ausfuehren` (`agents/direktiven/agent.py:109–110`, HEAD `ae05667`) | ~~teilt die Deutung aus `ZUSTIMMUNG-GILT-ALS-ABLEHNUNG`~~ → **nachgemessen am 21.08.2026: tut er nicht.** `agents/direktiven/dispatch.py:130` reicht die Antwort als `aufgabe` an den Agenten weiter, ohne Wortliste `[Code]` → seit dem 24.10.2026 mit Wortliste, kopiert aus `notizen` (unten) · **🔴 seit 18.10.2026** (zuvor 🟢): `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` offen, Rang hoch — ohne Wortliste gibt es auch kein Nein: Wer die Pflicht-Rückfrage verneint, löst die Aktion aus, nach der gefragt wurde · **24.10.2026, behoben im Code-Tree `2457549`** `[Code]` (Kennung wird nachgetragen → committet als `6846120`): ein Knoten `read_answer` vor `ausfuehren` (`agents/direktiven/resume.py`) — die Ablehnung zuerst, sie gewinnt; unklar bei einem `?` oder einem Stamm des Wartens; sonst führt eine Zustimmung die erfragte Aktion aus, für alle drei Ja/Nein-Fragen; eine Auswahlfrage führt nie aus. 35 Zeugen, 18 über den Graphen, Server-Suite `Ran 5244 tests` grün, Gegenproben 3 von 3, 3 von 3, 4 von 4 (`labor/2026-10-24_direktiven_n{2,3,4}_gegenprobe.txt`). **Bleibt 🔴:** `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` offen bis zur Messung im Betrieb; dazu gilt ~~`ABLEHNUNG-OHNE-STAMM-BESTAETIGT` seit dem Bau auch hier (*„ja, vergiss es“* löscht)~~ → geschlossen am 25.10.2026 (Zeugen `ClosedConsentTest`; *„ja, vergiss es“* ist unklar) · **25.10.2026, im Betrieb teils gemessen** `[gemessen 24.10.2026]`: das Tor mit gesetzter Rückfrage 4 von 4 (*„Wie bitte?“* und *„ist das ok“* erneuern, *„Nein“* löscht nicht, *„ja“* löscht); der echte Weg bricht ab — **`DIREKTIVEN-KENNUNG-UNGEPRUEFT` (hoch, neu 25.10.2026):** Das Modell gibt die Kennung als *„[13]“* zurück, `invalid input syntax for type integer`, keine Rückfrage, nichts gelöscht `[gemessen]`; die Kennung geht ungeprüft und ohne Bindung an den Menschen an `_update`, `_delete`, `_reactivate` `[Code]`; `DIREKTIVEN-FUEHRT-JEDE-ANTWORT-AUS` kann über den echten Weg erst danach geschlossen werden; bleibt 🔴 |
| **CharakterIdentitätsAgent** | ~~🟢~~ → ~~🔴 (24.10.2026)~~ → ~~🟠 (26.10.2026)~~ → 🔴 (06.11.2026) | **06.11.2026, offen:** `CHARAKTER-LOESCHEN-OHNE-ZIEL-TRIFFT-ALLE` (hoch) `[Code]`; **🟠 → 🔴** · siehe §4 (~~`ZURUECKHALTUNG-GILT-ALS-ZUSTIMMUNG`~~ → geschlossen am 26.10.2026, wie `DIREKTIVEN-KENNUNG-UNGEPRUEFT`; im Betrieb nicht gemessen) · `[Code]` — `agents/charakter_identitaet/` | siehe §4 |
| **KZG-Agent** (5-Knoten-Subgraph) | ~~🟢~~ → 🔴 (06.11.2026) | **06.11.2026, offen:** `KZG-KANON-SCHREIBWEISE-GEHT-LEER` (niedrig) — `agents/kzg/speicher.py` und `queues.py` vergleichen roh `[Code]`; **🟢 → 🔴** · 2.803 Keys `[gemessen]` | ~~`QUEUE-PUSH-OHNE-PRIORITAET` offen~~ → geschlossen, im Archiv Hintergrund (berichtigt am 06.11.2026) |
| **DelegationsAgent** (Halluzinationsventil) | ~~🟢~~ → 🔴 (06.11.2026) | **06.11.2026, offen:** `DELEGATION-AKTE-OHNE-KANON` (niedrig) — die Akte schreibt fünf Kanon-Felder ungeprüft in Spalten, die niemand liest `[Code]`; **🟢 → 🔴** · **1.557 Akten / 2.068 Seiten** `[gemessen]` | `DELEG-SEITEN-VALENZ-TOT`, `DELEG-VEKTOR-EINGEFROREN` offen |
### 7.3 Die Agenten der Eigenzeit
| Agent | Ampel | Beleg | Rest |
|---|---|---|---|
| **RechercheAgent** | ~~🟢~~ → 🔴 (06.11.2026) | **06.11.2026, offen:** `MODELLFELD-UNGEPRUEFT-GELESEN` (mittel) `[Code]`; **🟢 → 🔴** · 538 Läufe in sieben Tagen `[gemessen]` | siehe §6 |
| **NachfragenAgent** | 🔴 | **58 Läufe, 2 erledigt, 56 Fehler**; letzter Lauf **12.08.**, während 45 Aufträge liegen `[gemessen]` | 53× „kein annotierter User-Turn mit Vektor", 3× Worker-/Loop-Fehler |
| **WiedervorlageAgent** (4-Tabellen-Scan) | ~~🟠~~ → 🔴 (22.10.2026; bleibt 🔴 am 23.10.2026) | **06.11.2026, offen:** `FAKTEN-WIEDERVORLAGE-OHNE-ERZEUGER` (niedrig) — die Quelle `fakten` liefert nie etwas `[Code]`; bleibt 🔴 · Zeitplan live registriert `[gemessen]` · **🔴 seit dem 22.10.2026, am Code geprüft:** `WIEDERVORLAGE-TIMELINE-OHNE-TITEL` ~~offen~~ → **behoben mit `5c00a98`, im Betrieb gemessen am 23.10.2026, 05:50 UTC, im Archiv** `[gemessen]` — ein Prüf-Nutzer, eine Zeile der Timeline gesät: die Sammlung der fälligen Einträge liefert 1 Eintrag mit richtigem Titel und richtigen Details, danach gelöscht, Rest 0; ~~eine fällige Wiedervorlage aus der Timeline liest `titel` und `beschreibung`, die Tabelle hat `title` und `details`; Titel und Details sind leer~~ · **rot bleibt die Zeile wegen** `WIEDERVORLAGE-SNOOZE-OHNE-WIRKUNG` (hoch) `[Code]` — am Code von `5c00a98` gelesen am 23.10.2026: Verschieben und Zählen stehen weiter außerhalb von `if nachfrage:` (`agents/wiedervorlage/agent.py`, Z. 144–161) | **kein einziger Audit-Eintrag** — ob er je gelaufen ist, ist nicht feststellbar |
| **CharakterAgent** (5-Profil-Destillation) | 🟠 | 34 Hash-Zeilen `[gemessen]` | **Audit-Eintrag seit 06.09.2026 gebaut** — `gestartet` und `erledigt` je Paar, `fehler` ueber einen Wrapper um `invoke`, geschrieben **nur wenn `hash_dirty` gesetzt war** (sonst 144 leere Zeilen am Tag). Anlass: Beim Zaehlen der Destillationszyklen trug das `hintergrund_log` **keine einzige** Zeile dieses Agenten. 6 Zeugen, Gegenprobe 1 rot, Suite **3197**; Zombie-Schlüssel greift daneben (§14) |
| **SynapsenPromotionAgent** | 🔴 | **24.10.2026, offen:** `LZG-TREFFER-MELDET-REINFORCEMENT` (niedrig) — `match_pruefen` meldet beim Treffer weiter *„-> Reinforcement“*, obwohl weder die Dublette noch die Halbreaktivierung verstärkt; falsch ist nur der Text `[Code]`; bleibt 🔴 · 29.129 Audit-Einträge `[gemessen]`; offener Defekt `PROMO-LAUF-ZAEHLT-VERWORFENE` | der Lauf zählt verworfene Einträge als promotet; P4 abgeschlossen am 19.09.2026 (`SYNAPSEN-LIVE-VERIFY` abgenommen, `KZG-ERSTELLT-AM-PARSE-HÄRTE` gebaut) · 23.10.2026: Schritt 4 (das Löschen des KZG-Hash nach einer Neuanlage, Code-Tree `2d18b83`) und die Dublette (Code-Tree `5342a6a`) gebaut, ~~im Betrieb nicht gemessen~~ → committet als `d11de95` und `782274c`, im Betrieb gemessen am 23.10.2026 (*Promotion KZG → LZG*) |
| **SynapsenDecayAgent** | 🟢 | 40 Läufe `[gemessen]` | — |
| **ZielDecayAgent** | 🟢 | 42 Läufe `[gemessen]` | — |
| **WissensluecketAgent** | 🔴 | 785 Zeilen, alle `offen` `[gemessen]` | kein Audit-Eintrag, kein Verbraucher |
|