docs/novaberg-klaerung_m.md
Rama master · réplica de lectura del repositorio original.
# Novaberg — Klärung: Abweichung und Lücke sind derselbe Vorgang (Messungen)
**Teil 5 von 5 — Messungen.** Absicht und Kopfblock: [`novaberg-klaerung_k.md`](novaberg-klaerung_k.md) · Ausarbeitung: [`novaberg-klaerung_t.md`](novaberg-klaerung_t.md) · Bauplan und Umstellung: [`novaberg-klaerung_b.md`](novaberg-klaerung_b.md) · Diskussion und Ergänzungen: [`novaberg-klaerung_e.md`](novaberg-klaerung_e.md). Die Abschnittsnummern sind die des ungeteilten Konzepts; welche Datei einen Abschnitt trägt, sagt die Tabelle *„§ → Datei“* in `_k`.
---
## 3. Was der Bestand heute tut
| Stelle | Zustand |
|---|---|
| `fakten` — Triple-Store | ✅ **trägt die Struktur**: `subjekt_id` → `attribut` → `objekt_id \| objekt_wert`, bitemporal über `t_valid` / `t_invalid` / `aktiv` |
| Aktualisierung eines Fakts | ❌ **entscheidet an einer Zeichenkette** — und läuft heute gar nicht: `fakten` hat 0 Zeilen, kein Aufrufer setzt `ziel = "fakten"` (Backlog `15e`). Siehe §3.1 |
| GV4-Lückensuche | 🔶 findet die akute Lücke des Turns, **und vergisst sie**. Sie führt zu keiner Handlung |
| `wissensluecken` | 🔶 ein **Themen**-Verzeichnis (`thema`, `resonanz`, `neuheit`) — es beantwortet „wohin zieht es sie über Wochen", nicht „welcher Slot dieses Objekts fehlt" |
| Rückfrage samt Resume | 🔶 **gebaut, aber agentengebunden** — ausgelöst nur von Mehrdeutigkeit einer Agenten-Operation, nie von einer Wissenslücke |
| Erwartungsschema je Objekttyp | ❌ **existiert nicht.** Nichts sagt, welche Eigenschaften ein „Besuch" hat |
| Urteil über eine Abweichung | 🔶 neu mit `SYK-B1` — dreiwertig; ~~niemand liest es~~ **seit 05.08.2026 liest es die Vorzeichenprüfung** (`SYK-B4` Stufe 1) und legt ihren Befund ins `pipeline_log`. Für K2 bleibt es der Eingang; dass es gelesen wird, ist damit kein Neubau mehr, sondern ein Anschluss |
### 3.1 Der Kern des Defekts — heute unerreichbar
> **Vorab, gemessen am 04.08.2026:** Die Tabelle `fakten` hat **null Zeilen**, und kein Aufrufer setzt jemals `ziel = "fakten"` — im Bestand kommen nur `kzg` und `notizen` vor. Der Triple-Store war in Betrieb und ist beim Umbau nicht mitgezogen worden; der Backlog führt den fehlenden Erzeuger als `15e`. Der folgende Code läuft also korrekt beschrieben, aber **nicht**. Er wird zum Defekt in dem Moment, in dem `15e` gebaut ist — und deshalb steht er hier, statt vergessen zu werden.
Der Aktualisierungspfad des Faktengedächtnisses entscheidet so:
```python
if alter_wert != neuer_wert:
# Widerspruch → alten Fakt invalidieren
```
Ein reiner Ungleichheitsvergleich invalidiert den bestehenden Fakt und schreibt den neuen. **Drei verschiedene Fälle nehmen denselben Weg:**
| Fall | Richtig | Heute |
|---|---|---|
| zutreffende Berichtigung („ich hatte den Urlaub vergessen") | aktualisieren | aktualisiert ✅ |
| Fortschreibung („jetzt sind es sieben Wochen") | aktualisieren | aktualisiert ✅ |
| Widerspruch zum eigenen früheren Wort | markieren, beide halten | **überschreibt** ❌ |
Das ist Erkennung ohne Bewertung. Die bitemporale Maschinerie, die beide Werte halten könnte, ist vorhanden — es fehlt das Signal, sie unterschiedlich zu benutzen.
### 3.2 Die strukturelle Lücke: zwei Graphen, ein Turn
~~Fakten werden aus zwei Quellen geschrieben: aus dem Salienz-Knoten auf normalen Turns, und über den Aufgabenpfad.~~ **Korrigiert am 04.08.2026** — der Salienz-Knoten schreibt ausschließlich `ziel: "kzg"`, keine Fakten.
Die Lücke ist eine andere und größer:
| Graph | Knotenfolge | Verfasser? |
|---|---|---|
| **HumanGraph** (Pfad 1) — die Nutzeräußerung | `perzeption → enricher → ei_calc → salience → dispatcher` | **nein** |
| **CharacterGraph** (Pfad 2) — Novas Seite | u. a. `planner → … → verfasser → responder → … → salience → dispatcher` | ja, außer bei `task_context_cut` |
**Es sind zwei getrennte Durchläufe über denselben Turn**, korreliert allein über `turn_id`. Das Urteil entsteht im zweiten Graphen; was der erste schreibt, sieht es nie. Eine Prüfung, die am Urteil des Verfassers hängt, deckt den HumanGraph also grundsätzlich nicht ab — nicht nur „manchmal nicht", wie es die Erstfassung nahelegte.
**Dazu kommt der Aufgabenpfad:** Bei `task_context_cut` wird auch im CharacterGraph der Verfasser übersprungen (der Kontext-Schnitt beendete eine Halluzination bei Agent-Erfolg und ist so gewollt). Dort entsteht ebenfalls kein Urteil — ausgerechnet dann, wenn ein Nutzer ausdrücklich etwas ändern lässt.
> **Daraus folgt der Ort der Prüfung.** Sie gehört in den **Schreibpfad**, nicht in den Antwortpfad: Dort deckt sie beide Graphen und den Aufgabenpfad ab, und sie ist Stufe 1 bis 3 aus §2.1 — still, unbedingt, ohne Charakteranteil. Das Verfasser-Urteil verfeinert sie, wo es vorliegt.
---