# Novaberg — Faktengedächtnis (Diskussion und Ergänzungen) **Teil 4 von 5 — Diskussion und Ergänzungen:** Entscheidungen, offene Fragen, verworfene Fassungen, Befunde. Absicht und Kopfblock: [`novaberg-memory-fakten_k.md`](novaberg-memory-fakten_k.md) · Bauplan: [`novaberg-memory-fakten_b.md`](novaberg-memory-fakten_b.md) · Ausarbeitung und Messungen: keine (`_k`, Kopfblock). Die Abschnitte dieser Datei tragen Buchstaben, damit sie nicht mit den Abschnittsnummern des Konzepts verwechselt werden. **Stand:** 26. Oktober 2026, 07:51 UTC (`date -u`; A Nr. 46: die Commit-Kennung nachgetragen — Code-Tree `47256bf` ist `a4997ac`, die Doku dazu `277879b`). Davor 25. Oktober 2026, 22:05 UTC (`date -u`; A Nr. 46 neu: der Typ des Subjekts je Tripel — welche Beziehungen eine Person oder ICH als Subjekt verlangen, woher der Typ kommt und was `sonstiges` bewirkt; gebaut, nicht committet → committet als `a4997ac`, am Modell gemessen). Davor 23. Oktober 2026, 20:11 UTC (`date -u`; A Nr. 45 neu: die Fakten auch für eine gebundene Person, die nur im Namen eines akuten Objekts steckt — entschieden, nicht gebaut, Backlog `SACHLAGE-FAKTEN-PERSON-IM-OBJEKTNAMEN`; A Nr. 41 bis 43 vom 21.10.2026 stehen jetzt in dieser Fassung, die Sätze, sie stünden noch nicht darin, sind aus dem Kopf von A und aus Nr. 44 entfernt). Davor 22. Oktober 2026, 22:24 UTC (`date -u`; am Code geprüft und berichtigt — Vermerke in A Nr. 28, 34 und 38; C1 committet, C3 mit dem Typ einer Entität heute, C4 gebaut; E B8 aufgelöst). Davor 22. Oktober 2026, 20:29 UTC (`date -u`; A Nr. 44 neu: Regel (c) — eine Eigenschaft aus einem Fakt wird nur verborgen, wenn genau dieser Fakt angeboten ist; Nr. 13 und C2 darauf nachgezogen; C2 und C5 gebaut und committet, Code-Trees `d810399`, `0d5f633`, `04f823e` — Nr. 16, 36, C2, C5). Davor 21. Oktober 2026, 19:47 UTC (`date -u`; A Nr. 38, *Steht in*: S7 gebaut, nicht committet). Davor 21. Oktober 2026, 18:51 UTC (`date -u`; C1: das Fenster der Sachlage kommt aus dem Zeitbezug am Objekt, gebaut, nicht committet). Davor 21. Oktober 2026, 18:10 UTC (`date -u`; A Nr. 43 vervollständigt: der Typ-Fakt gehört dem Paar, zwingend heißt aus der Liste). Davor 21. Oktober 2026, 18:03 UTC (`date -u`; A Nr. 43: der Typ ist ein Fakt aus der Liste der sechs). Davor 21. Oktober 2026, 17:47 UTC (`date -u`; A Nr. 41 und 42: der Typ gehört dem Menschen, eine Entität kann mehrere Typen haben). Davor 21. Oktober 2026, 07:10 UTC (`date -u`; C3 und C5 nach Nr. 34 und 36 markiert). Davor 21. Oktober 2026, 06:13 UTC (`date -u`; A Nr. 40: die Tiefe der Mappe bleibt 2). Davor 21. Oktober 2026, 06:09 UTC (`date -u`; A Nr. 39: der Repair beim Start genügt). Davor 21. Oktober 2026, 06:05 UTC (`date -u`; A Nr. 38: das Ereignis gehört dem Paar). Davor 21. Oktober 2026, 05:50 UTC (`date -u`; A Nr. 37: Grenze und Umfang des Ereignisses). Davor 21. Oktober 2026, 05:48 UTC (`date -u`; A Nr. 36: der Erinnerungsanker sucht immer, gekappt). Davor 21. Oktober 2026, 05:02 UTC (`date -u`; A Nr. 35: der Magnet-Pfad ohne Rückfall, zwei Akten auf Rückfrage zusammenlegen). Davor 21. Oktober 2026, 04:56 UTC (`date -u`; A Nr. 34: der Typ aus der Klassifikation, der Grundsatz *Wir lernen*; Nr. 14 berichtigt). Davor 20. Oktober 2026, 21:30 UTC (`date -u`; A Nr. 29–33, die Leser und der Ort der Mappe, der Endpunkt, die Last des passiven Agenten). Davor 20. Oktober 2026, 18:55 UTC (`date -u`; A Nr. 25–28, die Bauart des passiven Fakten-Agenten; Nr. 7 für Fakten ersetzt; B leer). Davor 20. Oktober 2026, 05:32 UTC (`date -u`; A Nr. 23 kein Objekt-Merkmal, Nr. 24 der Fakten-Agent ist passiv; B: der Weg des Referenzwissens offen). Davor 17. Oktober 2026, 21:50 UTC (`date -u`; die Bauart angenommen: C2 bis C5 und die fünf Fragen ihres Entwurfs entschieden, A Nr. 13–21, dazu eine Umsetzungsentscheidung, Nr. 22; C nachgezogen, E um B8 ergänzt; nichts gebaut). Davor 17. Oktober 2026, 21:19 UTC (`date -u`; C1 im Betrieb gemessen: der Leseweg richtig, das Angebot leer, weil die Objektnamen ihn nicht treffen). Davor 17. Oktober 2026, 20:29 UTC (`date -u`; C1 entschieden und gebaut: ein Leseweg der Termine für Turn und Sachlage). Davor 17. Oktober 2026, 15:40 UTC (`date -u`; angelegt). --- ## A. Entschieden ~~**Zwölf Antworten, alle am 17.10.2026, umschrieben.**~~ → **Einundzwanzig Antworten und eine Umsetzungsentscheidung, alle vom 17.10.2026.** → Dazu Nr. 23 (19.10.2026) und Nr. 24 bis 28 (20.10.2026). → Nr. 41 bis 43 (21.10.2026) legen den Typ einer Entität fest (F7). → Nr. 44 (22.10.2026) präzisiert Regel (c) aus Nr. 13 und C2. → Nr. 45 (23.10.2026) erweitert das Angebot der Fakten auf eine gebundene Person im Namen eines akuten Objekts. → Nr. 46 (25.10.2026) legt fest, welchen Typ das Subjekt eines Tripels haben darf und woher der Typ kommt (F2). Nr. 1 bis 4 gingen den Fragen voraus und setzen die Absicht. Nr. 5 bis 12 beantworten die Fragen, die eine Prüfung der Erstfassung dieses Konzepts gegen die bestehenden Konzepte aufgeworfen hat; sie sind umschrieben. **Nr. 13 bis 21 nehmen die Bauart an** (C2 bis C5, unten C) und beantworten die fünf Fragen, die ihr Entwurf aufwarf. Sie stehen im Wortlaut, unverändert auch dort, wo er sich vertippt. Nr. 22 ist eine Umsetzungsentscheidung, keine des Meisters. C1 steht entschieden in C. Wie die Bauart je Bauteil aussieht, steht in `_b` §6. Die Beispiele sind synthetisch; die Namen *Lena*, *Kassel* und *Hamburg* sind frei erfunden. | Nr. | Frage | Antwort | Steht in | |---|---|---|---| | 1 | Was wird aus dem vorhandenen Fakten-Plugin? | **Der Fakten-Manager wird der Fakten-Agent:** Das Plugin `FaktenManager` wird zum Agenten umgebaut. Das ist M2.5b | `_k` §3.2 | | 2 | Ist die Voraussetzung *„nach dem Synapsen-Umbau“* erfüllt? | **Ja.** P1 bis P10 sind gebaut, der Rückbau des alten Langzeitgedächtnisses (P9) ist erledigt | `_k`, Kopfblock *Herkunft* | | 3 | Was soll das Faktengedächtnis leisten? (Absicht) | **Die Sachlage klärt ihre Objekte und nimmt auf, was über sie bekannt ist**, aus dem Gespräch oder aus anderen Quellen. Weltwissen, Termine aus der Timeline und Fakten fließen in die Sachlage; was neu und dauerhaft ist, wird als Tripel abgelegt, und dann hat Nova etwas gelernt. Offene Punkte klärt Nova, damit sich die Entitäten bestimmen lassen | Scheibe 13 der Lage ([`novaberg-thinking-lage_k.md`](novaberg-thinking-lage_k.md)); [`novaberg-klaerung_k.md`](novaberg-klaerung_k.md) §2.3 | | 4 | Wie wird gelesen? (Absicht) | **Über die ausgelagerten Lesewerkzeuge oder direkt über den Dienst, ohne den Router** | `_k` §5, Punkt 1; Scheibe 13 der Lage | | 5 | Was trägt `verbindung`? | **Weiter nur die Gedächtnis-Achse Turn → KZG → LZG**, ohne neue Spalte. Fakten hängen über die Entität; zu ihr wird eine Mappe ihrer Fakten geholt. Die Verbindungen einer Entität insgesamt abzufragen, ist ein späterer Schritt | `_k` §3.1 | | 6 | Wer speichert einen Fakt? | **Der Fakten-Agent**, wie der Timeline-Agent die Termine schreibt: Er ist die Fachabteilung, die weiß, wie man mit Fakten umgeht, hat Zugriff auf die Tabellen und kann Rückfragen veranlassen. Die Sachlage schreibt keine Fakten; das Speichern läuft über den Empfang | `_k` §3.2 | | 7 | Wird auch ohne ausdrücklichen Auftrag gespeichert? | **→ Für Fakten ersetzt durch Nr. 24 bis 26 (20.10.2026): der Agent ist passiv und verarbeitet jeden Turn, vorerst ohne Tor der Salienz.** ~~**Ja, über einer Grenze der Salienz.** Salienz und Themennähe entscheiden mit Novas Pflichtbewusstsein. Sagt die Salienz, das Thema ist wichtig, ruft Nova den Agenten öfter auf. Darunter entscheiden Pflichtbewusstsein und Nähe, ob sie vorschlägt oder fragt, etwas zu speichern. Aussagen über nahe Menschen sollen durch die emotionale Bindung eine hohe Salienz bekommen. Ob sie das heute tun, ist zu prüfen. Das deckt sich mit der Festlegung vom 18.05.2026 (*Router-getrieben mit Salienz-Fallback*) | `_k` §3.2; `_b` M1 | | 8 | Gehören Fakten dem Paar oder dem Menschen? | **Dem Paar, auch das Weltwissen.** Das Gedächtnis gehört dem Paar, also auch die Fakten. Es ist Novas Gedächtnis, und was der Mensch ihr sagt, ist ihres | `_k` §2.1 | | 9 | Woher kommt das Weltwissen? | **Aus dem Modell, sonst aus dem Internet.** Dass eine Stadt in ihrem Land liegt, sollte das Modell wissen; sonst wird recherchiert. Nova darf es lernen und speichern | `_k` §2.2 | | 10 | Wie gehen Zeit, Ereignisse und Zeiträume in Fakten ein? | **Ein Monat wird keine Entität**, er bleibt für alle. Ein Termin im Monat ist ein Eintrag der Timeline. Eine Spanne über den ganzen Monat ist ein Termin mit Anfang und Ende und damit eine Referenz auf den Monat. Ein Ereignis mit unklarem Zeitraum, etwa ein Umzug *im November*, klärt die Sachlage. Ein privater Umzug dauert ein oder zwei Tage, fällt also vermutlich auf ein Wochenende; welches, ist zu klären | `_k` §2.3; [`novaberg-klaerung_k.md`](novaberg-klaerung_k.md) §2.3 | | 11 | Was gilt, wenn ein neuer Fakt einem alten widerspricht? | **Das bestehende Schema des Ersetzens:** Der neuere Wert verdrängt den älteren, und die Historie bleibt nachvollziehbar. Nachgelesen ist es die bi-temporale Versionierung aus [`novaberg-mem-knowledge-graph.md`](novaberg-mem-knowledge-graph.md) §7: invalidieren und neu anlegen, ohne Rückfrage, Struktur statt Konfidenzwerte. Der Verfall der Kante ist davon unabhängig | `_k` §2.4 | | 12 | Stößt die Mappe auch die Erinnerungen an? | **Ja, und sie reicht über die Kanten hinaus.** Zu einer Entität werden auch die Fakten ihrer Nachbarn mitgeladen. Zuerst war *bis zum dritten Grad* genannt. Noch am selben Tag ist der Ausgangswert festgelegt: **der zweite Grad in beide Richtungen**, über und unter der Entität. Die Tiefe ist zu messen, bevor sie fest wird | `_k` §3.1; `_b` M2 | | 13 | Werden die Eigenschaft der Sachlage und der Fakt zusammengelegt? (C2) | **Getrennt, mit der Begründung des Meisters.** Wortlaut: *„Gesprächsgegenstände sind "Bilder" einer Sachlage im Kontext, die langsam Konturen annehmen und sich verschärfen. Sie ordnen Information zu Objekten und zeigen Wissen und Lücken, es besteht kein notwendiger Bedarf, kann aber mit Neugier zu Fragen führen. Fakten sind hingegen gespeichertes Wissen. Auch sie zeigen Lücken, aber sie sind im Gegensatz zum Kontext als zum Speichern wertvoll erachtet. Zwei verschiedene Silos, zwei verschiedene Blickpunkte.“* Dass keiner dasselbe zweimal hält, sichern drei Regeln der Bauart: Es gibt nur die Richtung Eigenschaft → Fakten-Agent; deckt die Mappe eine Eigenschaft, verweist die Eigenschaft auf den Fakt; bei einem gebundenen Objekt geht im Angebot die Mappe vor, und ~~eine Eigenschaft mit Verweis auf einen Fakt wird nicht angeboten~~ → eine Eigenschaft mit Verweis auf einen Fakt wird nur dann nicht angeboten, wenn genau dieser Fakt im Angebot steht (präzisiert am 22.10.2026, Nr. 44) | C2; `_k` §2.5, §5 Punkt 2; `_b` §6, F1 | | 14 | Welches Typsystem setzt ein *„ist ein“*-Fakt? (C3) | **Die feste Typliste**, nach einer Gegenfrage des Meisters: *„Warum nicht grobes Embedding? Schwester, Bruder, Verwandter Mensch, diese sind alle ähnlich.“* Darauf vorgeschlagen und vom Meister bestätigt: Die feste Typliste bleibt das Ziel (Person, Ort, Organisation, Tier, Objekt). Die freie Klasse aus *„ist ein“* wird über das vorhandene Embedding-Modell dem nächsten Typ zugeordnet; unter einer Mindestähnlichkeit bleibt `sonstiges`. Beziehungen bleiben exakt: Schwester ist nicht Bruder. Wortlaut der Bestätigung: *„A3: Ja, das gilt“* — *A3* ist die Nummer, unter der C3 vorgelegt war. Die Klasse eines Objekts der Sachlage bleibt die Sicht des Gesprächs → **Der Mechanismus ist am 21.10.2026 abgelöst** (Nr. 34): Eine Mindestähnlichkeit trennt am Embedding des Betriebs `sonstiges` nicht von den Typen (gemessen); der Typ kommt aus der Klassifikation. Die feste Typliste bleibt. | C3; `_k` §1 Punkt 4, §5 Punkt 3; `_b` F7 | | 15 | Wer trägt das Ereignis einer anderen Person in die Timeline ein, und wann? (C4) | **Ein neuer Typ `ereignis`; über der Grenze der Salienz ohne Auftrag.** Wortlaut: *„2a, wenn die Salienz überschritte ist, dann auch ohne Auftrag in die TImeline, darunter kann Niva je nach Wille und Pflichtbewusstsein fragen.“* Eingetragen wird vom Timeline-Agenten, nicht vom Fakten-Agenten, im selben Turn vor dem Fakt, der auf den Eintrag verweist. Unter der Grenze fragt Nova je nach ihrem Willen und Pflichtbewusstsein. Für die eigenen Termine des Menschen gilt weiter: eingetragen wird nur auf Auftrag ([`novaberg-agent-timeline.md`](novaberg-agent-timeline.md) §3a) | C4; `_k` §2.3, §5 Punkt 4; `_b` F6; [`novaberg-agent-timeline.md`](novaberg-agent-timeline.md) §3a, §8 | | 16 | Wo läuft die gezielte Erinnerungssuche mit der Mappe? (C5) | **In einem eigenen Knoten zwischen der Sachlage und dem Router, dem Erinnerungsanker.** Wortlaut: *„Angenommen“*. Die Sachlage legt die Entitäten ihrer akuten, gebundenen Objekte in einen eigenen Kanal. Der Knoten holt je Entität die Mappe, sucht mit den Entitäten im Langzeitgedächtnis und rendert den Gedächtniskontext neu, so dass Mappe und Erinnerungen im Prompt desselben Turns stehen | C5; `_k` §3.1, §5 Punkt 5; `_b` §6 — gebaut am 22.10.2026, committet (Code-Trees `0d5f633`, `04f823e`) | | 17 | Hat eine Beziehung einen Wert oder mehrere? | **Je Beziehung ein- oder mehrwertig, geführt im Kanon der Beziehungen.** Wortlaut: *„1a, die Anzahl der Geschwister, Haustiere und andere Dinge können erfragt werden.“* Einwertig sind etwa Wohnort, Beruf und Partner, mehrwertig Geschwister und Haustier. Ein neuer Wert löst nur bei einer einwertigen Beziehung den alten ab; bei einer mehrwertigen kommt er dazu. Die Anzahl bei einer mehrwertigen darf Nova erfragen: eine offene Eigenschaft wie jede andere, gefragt nach Haltung ([`novaberg-klaerung_e.md`](novaberg-klaerung_e.md) A, M1) | `_k` §2.4; `_b` F2, F5 | | 18 | Steht ein Ereignis einer anderen Person im Block `[TERMINE]`? | **Ja, gekennzeichnet als Ereignis mit der Person.** Wortlaut: *„3a“* | [`novaberg-agent-timeline.md`](novaberg-agent-timeline.md) §4a; `_b` F6 | | 19 | Wann wird ein Ereignis mit bekanntem Monat und offenem Tag eingetragen? | **Sofort, mit der Genauigkeit *Monat*.** Wortlaut: *„4b“*. Ist der Tag geklärt, wird der Eintrag verschoben, und der Verweis des Fakts folgt dem Nachfolger der Zeile (`timeline.nachfolger_id`, Nr. 20) | `_k` §2.3; `_b` F6; [`novaberg-agent-timeline.md`](novaberg-agent-timeline.md) §8, §9 | | 20 | Werden die Schemaänderungen der Bauart freigegeben? | **Im Grundsatz ja.** Wortlaut: *„5: ja“*. Es sind sechs: S1 `fakten.herkunft`, S2 `fakten.timeline_id`, S3 die Verfallsgröße, S4 `fakten.einwertig` mit einem Teilindex, S5 `timeline.nachfolger_id`, S6 die Genauigkeit *Monat*. **Jede DDL wird vor ihrem Bau einzeln angekündigt.** Die Herkunft `altbestand` entfällt, weil `fakten` keine Zeile trägt | `_b` §6, *Die Schemaänderungen* | | 21 | Wird die Bauart des Fakten-Agenten und der Mappe angenommen? | **Ja.** Wortlaut: *„Angenommen“*. Der Fakten-Agent ist der einzige Schreiber der Fakten (Nr. 6), gegliedert nach dem Muster des Timeline-Agenten, mit einem Kanon der Beziehungen. Die Mappe ist die eine Lesefunktion für alle Leser. Vom Plugin bleibt nur die Empfangsfläche. Dazu gehört die Reihenfolge des Baus | `_b` §6 | | 22 | Gilt ein Fakt schon, wenn sein Ereignis noch kommt? | **Umsetzungsentscheidung, keine Entscheidung des Meisters:** Der Fakt wird sofort geschrieben; seine Gültigkeit beginnt mit dem Ereignis, über den Verweis auf dessen Eintrag. Die Mappe zeigt beide Werte mit *bis* und *ab* (*„Hamburg bis Umzug, Kassel ab Umzug“*, synthetisch). Ein Lauf, der erst nach dem Ereignis schreibt, entfällt damit | `_k` §2.3; `_b` F6 | | 23 | Meldet sich der Fakten-Agent mit einem Objekt-Merkmal an? | **Nein, vorerst ohne.** Wortlaut: *„Ja, darf er, wir nehmen (A)“* (19.10.2026). Ein Dienst mit Merkmal steht im Planner nur vorn, wenn ein akutes Objekt ihn erreicht; ein Merkmal ist geeicht, nicht formuliert, und die Eichreihe trug keinen Fall über Personen. Ein Merkmal kommt erst nach einer Eichung an einer Reihe mit Bitten über Personen und nur, wenn es die Zustellung messbar verbessert | `_b` §6, F2 | | 24 | Wie erreicht Referenzwissen den Fakten-Agenten? | **Der Fakten-Agent ist passiv, und es gibt kein Entweder-oder** (20.10.2026). Wortlaut: *„Der Faktenagent hingegen ist jedoch eine passive Institution. Er verarbeitet alles, untersucht, ob Fakten aus einem Weltwissen in ein Referenzwissen übergehen. Und wenn dies der Fall ist, bildet er Trippel und speichert diese. Hier darf es also keine Entweder-oder-Situationen geben, sondern wann immer in der Sachlage Referenzwissen entsteht, muss dieses über den Faktenagent laufen.“* Eine Merk-Bitte geht weiter an die Notizen (aktiv). Gemessen vorher: Mit einem Zettel des Agenten am Empfang des Routers bekamen drei Notiz-Bitten mit Zeitangabe keinen Auftrag mehr, in vier Fassungen des Aushangs — der Router nennt genau ein Ziel. **Offen ist der Weg** (B) | `_k` §3.2; `_b` §6, F2, F4 | | 25 | Woher kommt der Schreibauftrag an den Fakten-Agenten? | **Aus der Sachlage, in jedem gerechneten Turn; ausgeführt vom Dispatcher nach der Antwort, die Salienz reist im Auftrag mit** (20.10.2026, Wortlaut *„1.: A“*). Damit ist der Weg aus Nr. 24 entschieden; nicht der Router, kein eigener Knoten vor der Antwort | `_k` §3.2; `_b` §6, F2 | | 26 | Ist die Salienz ein Tor für das Schreiben? | **Vorerst nicht** (20.10.2026, *„2.: A“*). Der Agent schreibt, was Kanon und Klassifikation bestehen; die Salienz steht im Audit; das Angebot *„Soll ich mir das merken?“* entfällt für Fakten. Ein Tor kommt, wenn die Salienz Nähe trägt (M1, `SALIENZ-TRAEGT-NAEHE-NICHT`). **Ersetzt Nr. 7 für Fakten** | `_k` §3.2; `_b` §6, F4 | | 27 | Ergibt eine Merk-Bitte über eine Person eine Notiz und einen Fakt? | **Beides** (20.10.2026, *„3.: A“*): Die Notiz deckt die Antwort im selben Turn, der Fakt entsteht im Nachlauf. Notizen sind nicht mehr auf das beschränkt, was nicht in das Fakten-Schema passt (`novaberg-agent-notes.md` §1) | `_k` §3.2 | | 28 | Ist der Fakten-Agent noch ein Agent? | **Schreiben ist ein Dienst ohne Empfang, Lesen ist ein Werkzeug** (20.10.2026, Wortlaut: *„Deine Empfehlung ist schlüssig. Ich folge ihr“*). Das Schreiben ist ein Urteil (Modell, Kanon, Prüfung der Antwort, begründete Ablehnung) und wird über den Schreibauftrag gewählt, nicht über einen Aushang; Ausgänge *geschrieben*, *kein Fakt*, *Fehler*, keine Rückfrage — eine Mehrdeutigkeit geht an den Klärfall am Objekt (F3). Das Lesen ist die Mappe (F1), gerufen von den Lesern früh im Graph. Das Plugin `FaktenManager` ist überflüssig und wird mit F1 gelöscht | `_b` §6, F1, F2 — gebaut mit neun Ausgängen je Auftrag und sechs je Tripel, das Plugin gelöscht, committet am 21.10.2026 (`_b` §6, F2; am Code geprüft am 22.10.2026) | | 29 | Liest die Wiedervorlage die Mappe? | **Nein** (20.10.2026, Wortlaut *„Alle wie empfohlen“*). Sie bleibt bei `FaktenRepository.find_wiedervorlage_faellig`: Ihr Lesen ist eine Fälligkeitsliste über das Paar, nach Datum, kein Wissen über eine Entität. *„Ein Bestand, eine Lesefunktion“* (`_k` §3.1) gilt für das Wissen über eine Entität | `_b` §6, F1 | | 30 | Liest der Fakten-Agent die Mappe? | **Nein** — folgt aus Nr. 28 (die Mappe wird von den Lesern früh im Graph gerufen, der Agent schreibt im Dispatcher), bestätigt am 20.10.2026 ohne Widerspruch. Ob ein Wert schon aktiv ist, prüft `FaktenRepository.schreiben` in der Transaktion; eine gekappte Mappe auf eigener Verbindung könnte dort einen Wert verdecken und ein Duplikat erzeugen | `_b` §6, F1 | | 31 | Wo liegt die Mappe? | **Das Durchlaufen im Repository, der Rest darüber** (20.10.2026, *„Alle wie empfohlen“*): beide Richtungen und der zweite Grad als neue Funktion von `FaktenRepository` (vorgesehen `find_umgebung`); Ordnung, Kappung und Form in `memory/fakten_mappe.py`, deren Importe ein eigener Zeuge hält | `_b` §6, F1 | | 32 | Was zeigt `GET /fakten/{user_id}`? | **Die Entitäten, ohne Fakten; die Mappe je Entität unter einem eigenen Pfad** (20.10.2026, *„Alle wie empfohlen“*): `GET /fakten/{user_id}/{entitaet_id}?character_id=…` liefert die Mappe der Entität im Paar, `GET /fakten/{user_id}` nur noch Kennung, Name und Typ der Entitäten. Kein zweiter Leseweg mit eigenem SQL | `_b` §6, F1 | | 33 | Darf der passive Agent je Turn ein Modell rufen? | **Ja, ohne Vorfilter** (20.10.2026, *„Alle wie empfohlen“*). Gemessen am Bestand: ein Kandidat in etwa jedem vierten gerechneten Turn, ein Aufruf höchstens 8,1 s, nach der Antwort. Ein Vorfilter auf Personen und Orte verlöre Aussagen, die die Sachlage als Vorgang ablegt. Nach dem Bau der Klassifikation werden Dauer des Nachlaufs und Last im Betrieb gemessen | `_b` §6, F2 | | 34 | Woher kommt der Typ, wenn die Mindestähnlichkeit nicht trägt? (C3, F7) | **Die Klassifikation des Fakten-Agenten wählt bei einem *„ist ein“*-Fakt den Typ aus der festen Liste mit, `sonstiges` eingeschlossen; der Code prüft ihn gegen die Liste, vor dem Commit wird das Feld am Modell gemessen** (21.10.2026, Wortlaut: *„Wir nehmen A wie empfohlen.“*). Anlass: An 72 Klassenwörtern trennte keine Schwelle `sonstiges` von den Typen, in fünf Fassungen und auch nicht mit dem Abstand zum zweiten Typ; der nächste Typ stimmte höchstens 20 bis 23 von 30 (`labor/2026-10-20_m_f7_mindestaehnlichkeit_ergebnis.md`). **Dazu der Grundsatz, Wortlaut:** *„Ich bitte zu berücksichtigen, dass das nichts Absolutes ist. Wir sammeln Fakten zu Entitäten, die wir haben. Wenn wir Fakten nicht haben, dann haben wir sie eben nicht. Das heißt, im Laufe der Zeit werden sich die Informationen vervollständigen. Und bis dahin kann es sein, dass wir einige Informationen einfach noch nicht haben. Wir lernen.“* — ein fehlender oder vorläufiger Typ ist ein Stand des Wissens, kein Fehler; ein späterer *„ist ein“*-Fakt löst ab (F5) | `_k` §1 Punkt 4, §5 Punkt 3; `_b` §6 F7 — nicht gebaut (am Code geprüft am 22.10.2026: das geprüfte Tripel trägt kein Typfeld; der Fakten-Agent gibt einer neuen Entität den Typ ihrer Beziehung aus dem Kanon oder `sonstiges`) | | 35 | Behält der Magnet-Pfad des Kurzzeitgedächtnisses den Rückfall auf Embeddings (bindet *Lea* an *Lena*)? | **Nein — auch der Magnet-Pfad löst nur über den Namen auf; zwei Akten derselben Person werden später auf Rückfrage zusammengelegt** (21.10.2026, Wortlaut: *„Ich würde hier auch die Variante A nehmen. Ich denke, dass es durchaus akzeptabel ist, dass man eine zweite Entität mit einer Akte anlegt und wenn sich dann herausstellt, dass zwei Entitäten in Wirklichkeit eine sind, könnte man über eine Rückfrage die beiden Akten zusammenlegen zu einer. Das heißt, wenn sich im Gespräch, im Kontext herausstellt, dass Anne in Wirklichkeit Anna ist und es wurden ursprünglich zwei Entitäten angelegt, dann könnte man die Fakten von Anne zu Anna migrieren und die Triple so ändern, dass sie Anna zugeordnet werden. Das könnte man in einem Gespräch klären und vielleicht einzeln sogar abstimmen.“*). Gezählt vorher im Serverlog, 18.09.–21.10.2026: 7 Bindungen über den Rückfall, 54 Suchen ohne Treffer. Daraus: eine Schreibvariante wird eine zweite Entität statt einer falschen Bindung — derselbe Weg wie bei Fakten (§4.3 des Musters, 20.10.) und Sachlage (F3, 17.10.); das Zusammenlegen ist eine eigene Fähigkeit (Backlog `ENTITAETEN-ZUSAMMENLEGEN`) | `novaberg-pattern-entity-resolution.md` §2.2; `_b` §6 F3 | | 36 | Sucht der Erinnerungsanker auch, wenn die Entität keine Fakten hat? (C5) | **Ja — immer, gekappt wie die übrigen Quellen und entdoppelt gegen die Resonanz** (21.10.2026, Wortlaut: *„Wir nehmen A.“*). Nr. 16 sagte es ohne Bedingung; `_b` §6 *„Ohne Fakten bleibt der Prompt zeichengleich“* widersprach und ist damit widerlegt. Gezählt vorher im Betrieb: 0 aktive Fakten, 808 von 4571 Knoten des Langzeitgedächtnisses mit Entitäten, 40 von 538 Objekten der Sachlage gebunden — mit der Bedingung bliebe der Anker vorerst wirkungslos. Vorgeschlagen war die Bedingung (Prompt zeichengleich, weniger Abfragen) | `_b` §6, *Der Erinnerungsanker*; C5 — gebaut am 22.10.2026, committet (Code-Tree `04f823e`) | | 37 | Welche Grenze und welcher Umfang gelten für ein Ereignis einer anderen Person ohne Auftrag? (C4, F6) | **Die vorhandene hohe Grenze der Salienz (`KZG_SALIENZ_HIGH`), und der Prompt nimmt nur Ereignisse mit dauerhafter Folge oder Gewicht — Umzug, Hochzeit, Operation, Geburt —, keine Besorgung und keinen Ausflug** (21.10.2026, Wortlaut: *„Wir nehmen A.“*). Grund: Die Salienz trennt nah nicht von fremd (`SALIENZ-TRAEGT-NAEHE-NICHT`, jede neue Information über eine Person ≥ 0,70); vorerst ist der Prompt das eigentliche Tor, vor dem Commit an einer Rückhaltereihe gemessen. Präzisiert Nr. 15 | `_b` §6 F6 | | 38 | Wem gehört ein Ereignis einer anderen Person (*Lenas Umzug*) — dem Paar oder dem Menschen? (C4, F6) | **Dem Paar, wie seine Fakten; die Timeline bekommt dafür `character_id`** (21.10.2026, Wortlaut: *„Das Ereignis gehört dem Paar. Ja, das ist richtig. Alle Fakten gehören immer einem Paar.“*). Grund: Nr. 8 und die Paar-Konvention — Erlebnis-Wissen ist paarspezifisch, die Timeline gehört dazu ([`novaberg-convention-magneten.md`](novaberg-convention-magneten.md) §6). Heute trägt die Timeline nur `user_id`; das ist der offene Defekt `TIMELINE-PAIR-MISSING`, der damit vor dem Typ `ereignis` behoben wird (S7, DDL, vorher angekündigt; der Bestand bekommt die Figur `nova`). Verworfen: das Ereignis dem Menschen geben, sichtbar für jede Figur — ohne DDL, aber gegen die Konvention | `_k` §5 Punkt 4; `_b` §6 F6, S7 — S7 gebaut am 21.10.2026, ~~nicht committet, die DDL am Betrieb steht aus~~ → committet mit `2cfe1b0`, die DDL am 21.10.2026 angewandt (`_b` §6, *Die Schemaänderungen*) | | 39 | Reicht der Repair beim Start für eine Entität, deren Embedding beim Anlegen ausfiel? (`ENTITAETEN-OHNE-EMBEDDING`) | **Ja — der Repair beim Start genügt; den Takt legt erst der nächste Leser des Embeddings fest** (21.10.2026, Wortlaut: *„A“*). Grund, gezählt gegen HEAD `ba83730`: Das Embedding einer Entität liest allein `EntitaetenRepository.find_similar`, gerufen nur aus dem Rückfall in `resolve_batch`, und den ruft nur der Magnet-Pfad — dessen Rückfall entfällt (Nr. 35). Danach hat das Embedding keinen Leser; ein Ausfall beim Anlegen ist seit dem 21.10.2026 als Fehler gemeldet. Ein möglicher nächster Leser ist das Zusammenlegen zweier Akten (`ENTITAETEN-ZUSAMMENLEGEN`), wenn es Kandidaten über die Ähnlichkeit sucht. Verworfen: den Nachlauf vom 06.10.2026 auch Embeddings füllen lassen — ein Takt für einen Leser, der wegfällt | `novaberg-pattern-entity-resolution.md` §6 | | 40 | Bleibt die Tiefe der Mappe beim zweiten Grad? (M2) | **Ja — die Tiefe bleibt 2** (`FAKTEN_MAPPE_TIEFE`; 21.10.2026, Wortlaut: *„Ja“*). Gemessen an einem gesäten Graphen mit dem Modell des Betriebs (`labor/2026-10-20_m2_mappe_tiefe_ergebnis.md`): Der zweite Grad beantwortet beide Fragen, die ihn brauchen (250 Zeichen); der dritte bringt eine von zwei Antworten mehr, wirr begründet, für rund 20 % mehr Zeichen. Eine Stichprobe, keine Rate | `_k` §5 Punkt 7; `_b` M2 | | 41 | Gilt der Typ einer Entität für den Menschen oder für das Paar? (F7, M1) | → *Abgelöst am 21.10.2026 durch Nr. 43, soweit der Typ an der Entität stand.* **Für den Menschen, wie die Entität selbst; gespeichert an der Entität oder mit ihr verknüpft — hat eine Entität mehrere Typen, in einer zweiten Tabelle daneben** (21.10.2026, Wortlaut: *„Wenn Entitäten dem Menschen gehören, können wir auch die Typen dem Menschen geben. Das heißt, wir können sie in die Entitäten-Tabelle schreiben oder damit verknüpfen. Wenn Typen eine 1:n Beziehung haben, müssen wir natürlich eine zweite Tabelle daneben machen.“*). Grund: `entitaeten` trägt keine `character_id` und gilt je Mensch; der *„ist ein“*-Fakt selbst bleibt beim Paar (Nr. 8, 38). Mit Nr. 42 sind die Typen 1:n — eine zweite Tabelle, also DDL (vor dem Bau angekündigt) | `_b` §6 F7 | | 42 | Hebt auch eine Beziehung des Kanons den Typ einer Entität an? (F7, M2) | → *Abgelöst am 21.10.2026 durch Nr. 43, soweit der Typ an der Entität stand.* **Ja — und eine Entität kann mehrere Typen haben** (21.10.2026, Wortlaut: *„Ich würde mehr Typen erlauben, ja. Mensch, Freund, Person, es kann mehrere Typen geben. Also B“*). Vorgelegt war (B): Eine Beziehung des Kanons mit festem Objekt-Typ hebt eine bestehende Entität von `sonstiges` an, ohne je einen echten Typ zu überschreiben; die Antwort geht darüber hinaus — ein späterer Typ kommt hinzu, statt abzulösen. Präzisiert Nr. 34 (*ein späterer „ist ein“-Fakt löst ab*). ~~**Offen:** ob die feste Liste bleibt (mehrere Typen aus ihr) oder auch freie Typen wie *Freund* zählen~~ → beantwortet durch Nr. 43: der Typ ist ein Wert aus der festen Liste der sechs; weitere Klassen wie *Freund* sind Fakten wie andere | `_b` §6 F7 | | 43 | Was bringt der Typ aus der Liste der sechs Werte, und wo steht er? (F7) | **Der Typ ist ein Fakt: ein zwingender Wert aus der Liste der sechs (Person, Ort, Organisation, Tier, Objekt, `sonstiges`), geschrieben in die Faktentabelle — nicht in `entitaeten`** (21.10.2026, Wortlaut: *„Wir können den Typ als 1 der 6 Werte als zwingenden Wert in die Fakten schreiben. Dann haben wir die Einordnung in 1 dieser 6 Schubladen, wie gewünscht, aber in der Faktentabelle.“*). Anlass, Wortlaut davor: *„das sind ja wieder Fakten: Fido ist ein Hund. Fido ist ein Tier, Fido ist sonstiges, Fido ist domestiziert, ... weitreichende Klassifizierungen nach ‚Typen‘ sind eher Fakten.“* Gezählt vorher: `entitaeten.typ` liest im Verhalten nur der Marker `user` (drei Stellen), dazu die Ausgabe der API; im Betrieb 1082 aktive Entitäten `sonstiges`, 54 `user`. **Löst Nr. 41 und 42 ab, soweit sie den Typ an die Entität oder in eine Tabelle neben ihr legten**; Nr. 34 bleibt für die Wahl aus der Liste durch die Klassifikation. Weitere Klassen (*Hund*, *domestiziert*) sind Fakten wie andere. ~~**Offen:** Fakten gehören dem Paar (Nr. 8, 38) — gilt das auch für den Typ-Fakt? Und heißt *zwingend*, dass jede Entität einen Typ-Fakt trägt, oder dass sein Wert aus der Liste stammen muss?~~ → **Entschieden am 21.10.2026, 18:10 UTC** (Wortlaut: *„1.: A 2.: A“*): **(1) Der Typ-Fakt gehört dem Paar**, wie jeder Fakt (Nr. 8, 38) — eine andere Figur kennt ihn erst, wenn sie ihn erfährt. **(2) *Zwingend* heißt: Der Wert stammt aus der Liste der sechs**, sobald ein Typ bekannt wird — durch *„ist ein“* (die Klassifikation wählt die Schublade) oder durch eine Beziehung des Kanons mit Objekt-Typ (*hat Haustier* → Tier); ohne Typ-Fakt gilt eine Entität als `sonstiges`, vorab wird nichts geschrieben (*„Wenn wir Fakten nicht haben, dann haben wir sie eben nicht“*, Nr. 34) | `_b` §6 F7 | | 44 | Wird an einem gebundenen Objekt eine Eigenschaft mit Verweis auf einen Fakt auch dann verborgen, wenn ihr Fakt nicht im Angebot der Sachlage steht? (C2, Regel (c)) | **Nein — (A): nur, wenn genau dieser Fakt im Angebot steht** (22.10.2026, Wortlaut: *„Gut, dann nehmen wir (A)“*). Vorgelegt waren (A) *nein, verborgen nur, wenn der Fakt angeboten ist*, und (B) *ja, wie es der Wortlaut von Regel (c) sagt*. Davor geprüft, Wortlaut: *„Aber wenn Lena laut Sachlage die Schwester ist und laut Fakt in […] wohnt, kommen beide als Angebot“* — ja: Eine Eigenschaft aus dem Gespräch, ohne Verweis auf einen Fakt, war nie betroffen und steht neben den Fakten derselben Person. Grund: Steht der Fakt nicht im Angebot — die Mappe ist leer oder fällt aus, die Entität ist unbekannt, der Fakt steht hinter `SACHLAGE_FAKTEN_ANGEBOT_MAX`, die Kante ist verfallen —, stünde nach (B) weder Fakt noch Eigenschaft darin. Präzisiert Nr. 13 und C2. **Umsetzungsentscheidung, nicht vom Wortlaut gedeckt:** Regel (c) wirkt weiter nur an einem gebundenen Objekt; eine Eigenschaft aus einem Fakt an einem ungebundenen Objekt bleibt, auch wenn derselbe Fakt über ein anderes, gebundenes Objekt angeboten ist — die engste Lesart beider Stellen | C2; Nr. 13; `_b` §6, *Das Angebot der Sachlage* — gebaut am 22.10.2026, committet (Code-Tree `d810399`, Teil H) | | 45 | Werden die Fakten auch für eine gebundene Person angeboten, die nur im Namen eines akuten Objekts steckt — synthetisch *„Lennas Beruf“*, *„Paket an Lena“*? (Scheibe 13, Teil H; C2) | **Ja** (23.10.2026, 05:41 UTC, Wortlaut: *„Beide wie empfohlen“* — die Antwort galt zwei Fragen; die andere steht in [`novaberg-memory-synapsen_e.md`](novaberg-memory-synapsen_e.md) A, E7). Vorgelegt am 22.10.2026 mit der Empfehlung *ja*. Grund, gemessen am Modell des Betriebs am 22.10.2026 (`labor/2026-10-22_h_c5a_messung_ergebnis.md`; 23 synthetische Äußerungen × 4 Läufe, Bindungen und Mappe als Doppel): Die erfragte Person ist nur in **43 von 92** Läufen akut, bei der Beziehungsform (*„meine Schwester“*) in **4 von 20**. Oft wandert die erfragte Eigenschaft an ein Objekt, das die Person nur im Namen trägt und selbst nicht gebunden ist; `fact_hits` bietet aber nur die Fakten akuter, gebundener Objekte an. So erreicht das Angebot den Auflöser selten — unbedingt gerechnet in 18 von 56 Läufen mit passendem Fakt —, obwohl er bei angebotenem Fakt 18 von 18 richtig wählt und nie fehlgreift. **Nicht gebaut.** Vor dem Bau ein Entwurf der Architektur: ob es im Prompt der Sachlage geschieht oder am Tor des Angebots | Backlog `SACHLAGE-FAKTEN-PERSON-IM-OBJEKTNAMEN` ([`novaberg-backlog-antwortpfad.md`](novaberg-backlog-antwortpfad.md)) | | 46 | (1) Welche Beziehungen des Kanons verlangen eine Person oder ICH als Subjekt, und für welche gilt eine Ausnahme? (2) Woher kommt der Typ des Subjekts, und wer prüft ihn? (3) Was geschieht, wenn das Modell als Typ `sonstiges` nennt? (F2, F7; Bug `FAKTEN-ORT-ALS-SUBJEKT-DURCHGELASSEN`) | **Alle drei wie empfohlen** (25.10.2026, Wortlaut: *„Alle 3 Fragen wir empfohlen“*). **(1)** Alle Beziehungen des Kanons verlangen eine Person oder ICH als Subjekt, außer `heisst` (jeder Typ außer `sonstiges`) und `wohnt_in`/`geboren_in` (auch ein Tier). **(2)** Der Typ des Subjekts kommt aus der Klassifikation des Fakten-Agenten: ein Wert aus der Liste der sechs (Nr. 43) je Tripel, im Feld `typ`. Der Code prüft ihn gegen die Beziehung und weist laut ab (`typ_form`: fehlt oder außerhalb der Liste; `subjekt_typ`: von der Beziehung nicht erlaubt). Der Typ-Fakt (F7) wird damit **nicht** geschrieben, und `entitaeten.typ` bleibt unverändert; das Feld wird vor dem Commit am Modell gemessen. **(3)** Nennt das Modell `sonstiges`, geht das Tripel durch, mit einer Logzeile; die Messung zählt es. Grund, gemessen vor dem Bau (lesend in der Datenbank des Betriebs, 25.10.2026): `entitaeten` trägt 1095 × `sonstiges`, 57 × `user`, kein `ort` und kein `person`; der Fall des Bugs ist ein Fakt mit einem Ort (Typ `sonstiges`) als Subjekt von `hat_hobby`. Eine Prüfung gegen `entitaeten.typ` hätte ihn nie gefangen — der Typ muss vom Modell je Tripel kommen. Präzisiert Nr. 34 (die Klassifikation wählt den Typ aus der Liste) und Nr. 43 (die Liste der sechs; der Typ-Fakt bleibt F7). Gebaut und gemessen: 20 Fälle × 2 am Modell des Betriebs, dem Bau nicht gezeigt — das Feld `typ` 0 fehlt, 0 außerhalb der Liste, es trifft den Typ des Subjekts in 28 von 30 Fällen, bei ICH 12 von 12 `person`, `sonstiges` 0; wegen des Typs verworfen 3, alle zu Recht, 0 zu Unrecht, kein Fakt der Nulllinie geht verloren | `server/agents/fakten/beziehungen.py` (`ENTITY_TYPES`, `subjekt_typen`), `klassifikation.py::vet_triple`; `_b` §6 F2; Bug `FAKTEN-ORT-ALS-SUBJEKT-DURCHGELASSEN` — Code-Tree `47256bf`, ~~nicht committet~~ → committet als `a4997ac` | --- ## B. Offen beim Meister - ~~**Der Weg des Referenzwissens zum Fakten-Agenten** (Nr. 24): über den Schreibauftrag, den der Dispatcher am Ende jedes Turns verteilt, statt über den Router? Wortlaut der Frage: *„Ist der Dispatcher, der immer einen Schreibauftrag hat, nicht besser? Ich möchte nicht sagen, dass der Dispatcher immer schreibt. Dies entscheidet ja im Endeffekt auch die Salienz oder gegebenenfalls andere Faktoren. Aber der Schreibauftrag ist zumindest immer vorhanden.“* Berührt Nr. 6, 7 und 21 (*über den Empfang*) und `_b` §6, F2 und F4. In Ausarbeitung.~~ → **entschieden am 20.10.2026**, Nr. 25 bis 28. Offen beim Meister: keine. --- ## C. ~~Offen in der Bauart — vor dem Bau zu entwerfen~~ → Die Fragen der Bauart — entschieden am 17.10.2026 Die Absicht ist entschieden (A). Diese fünf Fragen betreffen, **wie** sie gebaut wird, ~~und sind vor dem ersten Bauteil zu entwerfen~~ → und waren vor dem ersten Bauteil zu entwerfen. Sie stehen gleichlautend in `_k` §5. **C1 ist am 17.10.2026 entschieden und gebaut** (in der Zeile). → **C2 bis C5 sind am selben Tag entschieden, nicht gebaut** (je in der Zeile; A, Nr. 13–16). → C2 und C5 sind am 22.10.2026 gebaut und committet (je in der Zeile). → C4 ist mit F6 gebaut und committet, am 21. und 22.10.2026; C3 ist nicht gebaut (je in der Zeile; am Code geprüft am 22.10.2026). Die Bauart je Bauteil steht in `_b` §6. | Nr. | Frage | Anlass | |---|---|---| | C1 | **Zwei Lesewege der Timeline, und das Lesen ohne Router.** Wie entsteht das Fenster aus dem Objekt der Sachlage, und geht der Kalenderweg des Frame-Auflösers im gemeinsamen Leseweg auf? → **Entschieden am 17.10.2026, vom Meister angenommen:** *„ja, ein gemeinsamer Weg mit Datum und Uhrzeit für den Agenten, damit dieser verlässliche Werte liefert.“* **Gebaut am selben Tag** (getestet, ~~im Betrieb nicht gemessen~~ → **im Betrieb gemessen am selben Abend:** Der Leseweg liefert zu *November* und zu einem Titel die richtigen Termine, ohne Anker und mit *vergangen*; das Angebot blieb im Betrieb aber in 3 von 3 Turns leer, weil die Sachlage ihre Objekte frei benennt — *Novemberereignisse*, *Zahnarzttermin* —, [`novaberg-thinking-lage_m.md`](novaberg-thinking-lage_m.md) Scheibe 13, Bug `SACHLAGE-KALENDER-VERFEHLT-OBJEKTNAMEN`): Der Kalenderweg geht im gemeinsamen Leseweg auf. Das Fenster entsteht je akutem Objekt ~~aus `graph/appointments.py::time_window` (ein Zeitraum wie *November*; die Funktion ist aus dem Timeline-Agenten dorthin umgezogen) oder `search_window` (ein Titel)~~ → seit dem 21.10.2026 (gebaut und getestet, ~~nicht committet~~ → committet mit `250a5c1`) aus dem Zeitbezug des Objekts statt aus seinem Namen — `range_window` für einen Zeitraum, `search_window` für einen Titel ([`novaberg-thinking-lage_e.md`](novaberg-thinking-lage_e.md) Nr. 36, 37) —, gelesen mit `read_appointments` und der Uhr des Turns; `Appointment` trägt die Kennung der Zeile, die Herkunft im Angebot bleibt `timeline#` ([`novaberg-thinking-lage_b.md`](novaberg-thinking-lage_b.md) §4 Scheibe 6, *Nachgezogen am 17.10.2026*) | ~~Der Frame-Auflöser liest Kalenderzeilen über `TimelineRepository.find_by_keyword` (`graph/nodes/sachlage_resolver.py::_calendar_hits`).~~ → bis zum 17.10.2026; seither über `read_appointments`. Der Turn liest hinter dem Router über `memory/timeline_reading.py::read_appointments` mit `graph/appointments.py::appointment_window`, das den Zustand des Routers liest. `range_window` und `search_window` nehmen eine Anfrage und keinen Zustand und taugen damit auch ohne Router `[Code, gelesen 17.10.2026]`. Ein Silo hat einen Dienst ([`novaberg-convention-nmcp.md`](novaberg-convention-nmcp.md) §6a.1); den Lesepfad nimmt die Konvention ausdrücklich von der Zustellung aus (§11). Entschieden: A, Nr. 4 | | C2 | **Verfall der Kante gegen „kein Verfall“ im Eigenschaftsgedächtnis.** Werden Eigenschaft und Fakt zusammengelegt oder bleiben sie getrennt, und wie hält dann keiner dasselbe zweimal? → **Entschieden am 17.10.2026, vom Meister angenommen** (A, Nr. 13): **Sie bleiben getrennt** — *„Zwei verschiedene Silos, zwei verschiedene Blickpunkte.“* Die Eigenschaft verfällt weiter nicht, die Kante des Fakts verfällt. Drei Regeln halten dasselbe nicht doppelt: (a) Es gibt nur die Richtung Eigenschaft → Fakten-Agent, über den Empfang; (b) deckt die Mappe eine Eigenschaft, trägt die Eigenschaft als Quelle den Fakt (`quelle` mit der Art `fakten` und seiner Kennung); (c) bei einem gebundenen Objekt geht im Angebot der Sachlage die Mappe vor der Eigenschaft, und ~~eine Eigenschaft mit der Quelle `fakten` wird nicht angeboten~~ → eine Eigenschaft mit der Quelle `fakten` wird nur dann nicht angeboten, wenn genau ihr Fakt im Angebot steht — **Regel (c) nach (A)**, entschieden am 22.10.2026 (A, Nr. 44, Wortlaut *„Gut, dann nehmen wir (A)“*; (A) hieß *verborgen nur, wenn der Fakt angeboten ist*, (B) *immer*). Eine Eigenschaft ohne Verweis auf einen Fakt war nie betroffen. ~~Nicht gebaut~~ → **Gebaut am 22.10.2026, committet** (Code-Tree `d810399`, Teil H): (b) und (c) in `graph/nodes/sachlage_resolver.py` (`fact_hits`, `property_hits`), (c) in der Auswahl von `memory/sachlage_properties.py::active_properties`, sodass eine verborgene Zeile keinen Platz unter dem `LIMIT` belegt (`_b` §6, *Das Angebot der Sachlage*) | Die Kante eines Fakts verfällt ([`novaberg-convention-verfall.md`](novaberg-convention-verfall.md) §1.1). Eine Eigenschaft der Sachlage ist ein protokolliertes Faktum ohne Verfall ([`novaberg-thinking-lage_t.md`](novaberg-thinking-lage_t.md), Scheibe 11). Beide halten Objekt → Eigenschaft → Wert mit Ablösung. Das Frame-Konzept sieht Lager und Tripel als zwei Schichten ([`novaberg-thinking-frames_t.md`](novaberg-thinking-frames_t.md) §9.3) | | C3 | **Drei Typsysteme.** Welches setzt ein *„ist ein“*-Fakt (F7)? → **Entschieden am 17.10.2026, vom Meister bestätigt** (A, Nr. 14): **`entitaeten.typ` aus einer festen Liste** (Person, Ort, Organisation, Tier, Objekt). Der *„ist ein“*-Fakt bleibt ein Fakt; ~~seine freie Klasse wird über das vorhandene Embedding-Modell dem nächsten Typ der Liste zugeordnet, unter einer Mindestähnlichkeit bleibt `sonstiges`.~~ → Den Typ wählt die Klassifikation des Fakten-Agenten aus der Liste mit, `sonstiges` eingeschlossen (21.10.2026, A Nr. 34; eine Mindestähnlichkeit trug am Embedding nicht). Den Typ schreibt nur der Fakten-Agent, in derselben Transaktion wie den Fakt. Die Klasse eines Objekts der Sachlage bleibt die Sicht des Gesprächs. Beziehungen werden nicht über Ähnlichkeit zugeordnet, sie bleiben exakt. Nicht gebaut → am Code geprüft am 22.10.2026: `entitaeten.typ` ist heute freier Text (`VARCHAR(50)`) mit der Vorgabe `sonstiges`, ohne Prüfbedingung (`db/init.sql`); die Liste ist Absicht. Seit dem 20.10.2026 gibt der Fakten-Agent einem neuen Objekt den Typ seiner Beziehung aus dem Kanon (`ort`, `person`, `tier`), einem neuen Subjekt `sonstiges` (`agents/fakten/suche.py`, `typen`) | `entitaeten.typ` mit der Liste aus [`novaberg-mem-knowledge-graph.md`](novaberg-mem-knowledge-graph.md) §3, heute fast nur `sonstiges`; die Klasse eines Objekts der Sachlage nach dem Kanon der Frames; die freie Klasse aus *„ist ein“* | | C4 | **Ein Ereignis einer dritten Person in der Timeline.** Welcher Typ, welche Verhaltensmerkmale? → **Entschieden am 17.10.2026** (A, Nr. 15, 18, 19, 20 und 22): **ein neuer Typ `ereignis`** für ein Ereignis, das einer anderen Person geschieht. Er bindet die Zeit des Menschen nicht, löst keine Erinnerung aus und wird nicht gegen andere Einträge geprüft; die Person steht in `timeline.entitaet_ids`. Über der Grenze der Salienz trägt ihn der Timeline-Agent ohne Auftrag ein, im selben Turn vor dem Fakt; darunter fragt Nova je nach Willen und Pflichtbewusstsein. Ein Ereignis mit bekanntem Monat und offenem Tag wird sofort mit der Genauigkeit *Monat* eingetragen und nach der Klärung verschoben. Der Fakt verweist auf den Eintrag (`fakten.timeline_id`) und folgt ihm beim Verschieben über `timeline.nachfolger_id`. Im Block `[TERMINE]` steht das Ereignis gekennzeichnet, mit der Person. ~~Nicht gebaut~~ → Gebaut und committet am 21. und 22.10.2026, ohne die Frage unter der Grenze (`_b` §6, F6, S5 bis S7; am Code geprüft am 22.10.2026: `memory/timeline_types.py`, `graph/nodes/sachlage.py::build_event_order`, `graph/format/appointments.py`, `EVENTS_HEADER`) | Die Timeline kennt `termin`, `geburtstag`, `deadline`, `jahrestag`, `erinnerung` und den Erinnerungs-Anker ([`novaberg-agent-timeline.md`](novaberg-agent-timeline.md) §8), kein Ereignis, das einem anderen Menschen geschieht. A, Nr. 10 legt ein solches Ereignis in die Timeline | | C5 | **Die gezielte Erinnerungssuche nach der Sachlage.** Wo läuft der Schritt, der mit der Mappe als Anker im Erinnerungsgedächtnis sucht? → **Entschieden am 17.10.2026, vom Meister angenommen** (A, Nr. 16): **in einem eigenen Knoten zwischen `sachlage_node` und `router`, dem Erinnerungsanker.** → Er sucht immer, auch ohne Fakten (21.10.2026, A Nr. 36). `sachlage_node` legt die Entitäten der akuten, gebundenen Objekte in einen deklarierten Kanal, die in diesem Turn gebundenen wie die schon früher gebundenen. Der Knoten holt je Entität die Mappe, sucht mit den Entitäten in `lzg_knoten` und ergänzt die Resonanz, entdoppelt nach dem Knoten, legt die Mappe als Einträge der Quelle `fakten` ab und rendert den Gedächtniskontext mit demselben Formatter neu. So gibt es je Turn eine Wahrheit, und die Leser hinter dem Router sehen sie. ~~Nicht gebaut~~ → **Gebaut am 22.10.2026, committet** (Code-Trees `0d5f633`, `04f823e`): der Kanal `objekt_entitaeten`, die Suche `memory/lzg_knoten.py::knoten_zu_entitaeten` und der Knoten `graph/nodes/erinnerungsanker.py` (`_b` §6, *Der Erinnerungsanker*) | Das Langzeitgedächtnis wird heute im Enricher gelesen, vor der Sachlage (`reducer → sachlage_node → router`, [`novaberg-thinking-lage_b.md`](novaberg-thinking-lage_b.md) Scheibe 1). Die Mappe gibt es erst danach. A, Nr. 12 | **Zwei Messungen vor dem Festlegen**, mit Anordnung in `_b`: M1, die Salienz von Aussagen über nahe Menschen (A, Nr. 7), und M2, die Tiefe der Mappe (A, Nr. 12). --- ## D. Verworfene und überholte Fassungen | Fassung | Wo | Warum nicht | |---|---|---| | *„Was im Gespräch neu und dauerhaft über eine Entität gesagt wird, legt sie [die Sachlage] als Fakt ab“* | Erstfassung, Absicht und §2.3 | Die Sachlage schreibt keine Fakten; geschrieben wird vom Fakten-Agenten über den Empfang (A, Nr. 6) | | Der *November* als Objekt mit einer Mappe von Fakten; Bauteil *„Lage November → die Fakten zum November“* | Erstfassung, §2.1 und F2 | Ein Monat ist keine Entität. Er ist ein Zeitraum der Timeline (A, Nr. 10) | | *„Lena zieht im November um“* als Fakt (synthetisch) | Erstfassung, §2.3 | Das ist ein Ereignis und gehört in die Timeline. Der Fakt ist das dauerhafte Ergebnis, *Lena lebt in Kassel*, und er gilt ab dem Ereignis (A, Nr. 10) | | Die Grenze zwischen Weltwissen und Persönlichem als offene Frage *„je Paar oder je Mensch“* | Erstfassung, §5.7 | Beantwortet: je Paar, auch Weltwissen (A, Nr. 8) | | *„Zustimmung vor dem Ablegen“* als offene Frage | Erstfassung, §5.2 | Beantwortet: über der Grenze der Salienz ohne Auftrag, darunter ein Angebot (A, Nr. 7) | | *„Gilt die Regel der Klärung (nicht darauf bauen, nicht überschreiben, nachfragen)?“* bei einem Widerspruch | Erstfassung, §5.3 | Beantwortet: bi-temporal ablösen, ohne Rückfrage (A, Nr. 11). Die stillen Stufen der Klärung sind damit erfüllt (`_k` §2.4) | | Ein Gewicht oder Verfall entscheidet, welcher von zwei Werten gilt | erwogen bei der Frage zu A, Nr. 11 | Das Schema wählt Struktur statt Konfidenzwerte. Der Verfall regelt die Stärke eines aktiven Fakts, nicht die Ablösung | | Der Enricher als Ort, an dem die Akte zuerst geholt wird | [`novaberg-memory-synapsen_k.md`](novaberg-memory-synapsen_k.md) §3.2, *Sequenz* | Der Ort ist die Sachlage (A, Nr. 3); der zweite Schritt, die Akte als Anker der Erinnerung, bleibt (A, Nr. 12). Dort am 17.10.2026 markiert | | Gegenprobe zu F3: *„Klärung aus → falsche Lena still gewählt“* | Erstfassung, §6 | Am Code ist es umgekehrt: Eine mehrdeutige Entität wird still übersprungen, nicht falsch gewählt (`agents/kzg/magnete.py`, `[Code, gelesen 17.10.2026]`). Die Gegenprobe in `_b` prüft deshalb das Ausbleiben von Bindung und Frage | --- ## E. Befunde Gefunden beim Abgleich der Erstfassung gegen die bestehenden Konzepte am 17.10.2026; B8 beim Nachziehen der Bauart am selben Abend. Was hier steht, ist nicht aufgelöst, wenn nicht anders vermerkt. | | Stelle | Befund | Zustand | |---|---|---|---| | **B1** | Erstfassung §1, Punkt 4 | *„Seit dem Rückbau … (P9) entstehen Entitäten ohne Typ.“* Die Ursache ist nicht P9. Der Magnet-Pfad legt jede Entität seit P3 mit `sonstiges` an; die typisierende Extraktion endete mit P4 `[Code, gelesen 17.10.2026]` | **berichtigt** in `_k` §1, Punkt 4 | | **B2** | Erstfassung §3, letzte Zeile | Die Entscheidungen zu den Klärfällen waren mit [`novaberg-klaerung_e.md`](novaberg-klaerung_e.md) belegt, das sie zu diesem Zeitpunkt noch als offen führte. Am selben Tag nachgezogen; sie stehen dort in A (M0, M1, M3) | **berichtigt:** `_k` §3.2 verweist auf `novaberg-klaerung_e.md` A | | **B3** | [`novaberg-memory.md`](novaberg-memory.md) §10.3 | Fakten *„nein, atemporal“* gegen die Verfallsregel vom 16.08.2026, nach der die Kante verfällt | **markiert** am 17.10.2026 | | **B4** | [`novaberg-memory.md`](novaberg-memory.md) §13.2 | Der Enricher liest den Knowledge Graph als *Akte-Quelle*; das ist seit A, Nr. 3 die Sachlage | **markiert** am 17.10.2026 | | **B5** | [`novaberg-mem-knowledge-graph.md`](novaberg-mem-knowledge-graph.md) §3 und §8 | Stand April 2026: Die Typenliste kennt `sonstiges` nicht, und der Enricher-Hook in §8 beschreibt einen Weg, der seit Langem abgeschaltet ist | offen | | **B6** | [`novaberg-pattern-entity-resolution.md`](novaberg-pattern-entity-resolution.md) §5 | *„Die Entscheidung Referenz vs. Interface fällt in der Zwei-Call-Promotion (Call 1)“*. Call 1 entfiel mit P4; Eigennamen liefert heute die Salienz ([`novaberg-memory-synapsen_b.md`](novaberg-memory-synapsen_b.md) §13.5) | offen | | **B7** | Gemeinsamer Erzeuger der Mehrdeutigkeit | `EntityResolutionService` liefert bei zwei passenden Entitäten `braucht_klärung`, eine Rückfrage und die Kandidaten. Der Magnet-Pfad überspringt solche Fälle still, und die Bindung der Sachlage bindet dann nicht. Der Erzeuger steht, ein Leser fehlt `[Code, gelesen 17.10.2026]` | Bauteil F3 (`_b`) | | **B8** | A, Nr. 20, S6 | Die Bauart führt die Genauigkeit *Monat* als Schemaänderung, mit dem Wert `monat`. Am Code ist `timeline.precision` ein `VARCHAR(15)` ohne Prüfbedingung (`agents/timeline/init.sql`), `agents/timeline/event_time.py` führt `month` schon unter den gültigen Genauigkeiten, und geschrieben werden heute nur `minute` und `day` (`agents/timeline/crud.py`, `agents/kzg/magnete.py`) `[Code, gelesen 17.10.2026 gegen HEAD 4f8ce9c]`. Ob S6 eine DDL braucht und wie der Wert heißt, ist nicht aufgelöst | ~~offen~~ → **aufgelöst am 22.10.2026:** ohne DDL, der Wert `month` am Ersten des Monats (`_b` §6, S6; am Code geprüft am 22.10.2026: `agents/timeline/ereignis.py`, `PRECISION_MONTH`) |