docs/novaberg-gv-strategie_b.md
Rama master · réplica de lectura del repositorio original.
# Novaberg — Gesprächslandschaft (Bauplan und Umstellung)
**Teil 3 von 5 — Bauplan und Umstellung.** Absicht und Kopfblock: [`novaberg-gv-strategie_k.md`](novaberg-gv-strategie_k.md) · Ausarbeitung: [`novaberg-gv-strategie_t.md`](novaberg-gv-strategie_t.md) · Diskussion und Ergänzungen: [`novaberg-gv-strategie_e.md`](novaberg-gv-strategie_e.md) · Messungen: [`novaberg-gv-strategie_m.md`](novaberg-gv-strategie_m.md). Die Abschnittsnummern sind die des ungeteilten Konzepts; welche Datei einen Abschnitt trägt, sagt die Tabelle *„§ → Datei“* in `_k`.
---
## Aus Anhang A — A.0 Zwei Lücken, und was ein Kandidat ist
Die Entscheidungen, auf denen dieser Bauplan steht, stehen in [`novaberg-gv-strategie_e.md`](novaberg-gv-strategie_e.md), Abschnitt A; der Anlass und die Messung von Bauteil 3 in [`novaberg-gv-strategie_m.md`](novaberg-gv-strategie_m.md). Formel und Filter (A.1 bis A.5) stehen in [`novaberg-gv-strategie_t.md`](novaberg-gv-strategie_t.md).
**Die Bauform — Konzept, noch nicht gebaut:**
| Liste | Absicht | Kandidat | Bedingung | Prompt-Block |
|---|---|---|---|---|
| **Lücke beim Nutzer** | Lenken, Säen | ein Thema aus Knoten nahe am Turn | im laufenden Gespräch nicht gefallen **und** in keinem Knoten mit `beobachter = user` des Paares als Thema geführt — **✅ gebaut am 12.09.2026** (`ei/gap_topics.py`); der laufende Reiz zählt zum Gespräch | `[WISSENSLUECKEN]` |
| **Lücke bei Nova** | Nachfragen | eine offene Zeile aus `wissensluecken` | ihr Embedding liegt dem Turn nah — auf Impuls-Turns dem eigenen Gedanken; unter den nahen der höchste `neugier_vektor`; **leer ist zulässig** — **✅ gebaut am 12.09.2026**, Nähe ≥ `OFFENE_FRAGEN_MIN_NAEHE = 0.49` (Eichung in `novaberg-kalibrierung_k.md` §3.3) | `[OFFENE FRAGEN]` |
- **Was *„der Nutzer kennt es nicht"* hier heißt, ist eine Annäherung und wird so benannt:** Er hat das Thema im Bestand des Paares nie berührt. Das ist kein Nachweis von Unkenntnis, nur das Fehlen eines Belegs dafür.
- **Die Charakter-Resonanz wird auf dem Thema gemessen, nicht auf dem Satz,** aus dem es stammt. Der Satz trägt den Sprecher (+0,302 zwischen `assistant` und `user`), das Stichwort nicht.
- **Die Relevanz führt zwei Quellen zusammen und braucht deshalb eine Naht** (`F-NAHT-1`): LZG-Gewicht (`gewicht_decay`, bis `LZG_KNOTEN_GEWICHT_CAP`) und KZG-Salienz ([0, 1]) werden je über ihre gemessene Spanne normiert, bevor sie ins Produkt gehen. **✅ Gebaut am 12.09.2026** als **Rang in der eigenen Quelle** (`ei/source_weights.py`). Die Form war eine Messung, keine Ableitung: vorher gerechnet über elf echte Nutzerturns ergab roh 74 LZG / 8 KZG, geteilt durch die Obergrenze 3 / 59, Min–Max 4 / 48, Rang 22 / 18 — die KZG-Salienz liegt mit Median 0,97 fast oben, das LZG-Gewicht mit Median 3,89 nahe unten, jede lineare Form kehrt die Schieflage nur um. **Durch den gebauten Pfad nachgemessen: 16 LZG / 19 KZG**, 35 Lücken über dieselben elf Reize. **Der Preis:** `GV_LUECKEN_MIN_RELEVANZ = 0.15` war auf der rohen Skala gesetzt und lässt jetzt weniger durch; zwei der elf Turns bleiben leer. Kalibriert wird nach dem Themen-Umbau, weil der die Kandidaten ohnehin austauscht.
- **Die Bitte zuerst:** Trägt der Turn `user_emotion.intent = task`, erfahren GV und Verfasser, dass der Vorschlag oder die Auskunft vor jedem Gedankensprung steht. **✅ Gebaut am 12.09.2026** (`graph/reiz.py::is_request`, `[BITTE]`-Block im GV-Prompt, Vorgabe im Verfasser). **Gemessen ist die Ankunft, nicht der Gewinn:** In zwei Nulllinien mit acht sachlichen Bitten lieferte Nova schon ohne den Bauteil jedes Mal zuerst; das Ausweichen des Abends liess sich nicht nachstellen. **Offen ist eine Absichtsfrage:** Nur 3 der 12 Mess-Bitten trugen `task` — die Perzeption vergibt fuer *Nenne mir …* und *Gib mir eine Liste …* `knowledge`, fuer *Ueberrasch mich* `creative`; im Bestand 423 `knowledge` gegen 81 `task`. ~~Ob eine Wissensfrage ebenfalls *erst beantwortet* wird, sagt die Entscheidung nicht.~~ → **Am selben Abend entschieden, wörtlich:** *„Die Wissensfragen sind eher Pflicht, Neugier dann im Gegensatz dazu eher privater Natur. Ich würde es am Rad festmachen, ob eines davon in einer Relation vorkommt, die anlass dazu gibt, eines zu bevorzugen."* **Gebaut** (`graph/reiz.py::request_first`): Eine Wissensfrage ist Pflicht und kommt zuerst — außer im Zuwendungsrad des Paares liegt `wissbegier` um mehr als die Messunsicherheit des Rades (`GV_BITTE_RAD_ABSTAND = 0.05`, Median der Laufspanne beider Speichen über 97 Erhebungen) über `pflicht`; dann hat die Neugier den Vorzug. Gleichstand, Nullrad und nicht lesbares Rad bleiben bei der Pflicht. Die Entscheidung trifft der GV-Knoten einmal, mit Eingangswerten im Pipeline-Log und in `gv_detail['bitte_zuerst']`; der Verfasser liest nur dort. **Vorher gerechnet über die gespeicherten Räder:** Neugier hat Anlass in 11 von 13 destillierten Paaren, auch beim produktiven (0,761 gegen 0,887, Abstand 0,127, in 47 von 47 Erhebungen positiv); Pflicht in einem Paar (0,88 gegen 0,85), bei Gleichstand (0,5 / 0,5) und in den fünf Paaren mit Nullrad.
**Reihenfolge der Bauteile, und warum:** Naht → Novas Lücken nach Nähe → Themen und Nutzer-Lücke → Bitte zuerst. Jedes ändert eine andere Zahl des Betriebsbelegs (Quellenmischung · Fragenwechsel · Sprecheranteil · Antwortform); zusammen gebaut wäre eine Verschlechterung keinem zuzuordnen.
**Offen und vor dem Bau zu messen:** ~~die Schwelle der Turn-Nähe für Novas Lücken~~ (gemessen: 0,49); ~~die Kosten, Themen je Turn einzubetten, und ob ein Zwischenspeicher nötig ist~~ (gemessen: einzeln 150 ms je Thema bei rund 32 Themen je Turn; als Stapel 280 ms für 32, zeichengleiche Vektoren; mit Zwischenspeicher je Text **404 ms kalt, 187 ms warm** für die ganze Lückensuche).