# Novaberg — Der Dateien-Dienst: ein Verzeichnis, das gelesen werden darf (Bauplan und Umstellung) **Teil 3 von 5 — Bauplan und Umstellung.** Absicht und Kopfblock: [`novaberg-agent-dateien_k.md`](novaberg-agent-dateien_k.md) · Ausarbeitung: [`novaberg-agent-dateien_t.md`](novaberg-agent-dateien_t.md) · Diskussion und Ergänzungen: [`novaberg-agent-dateien_e.md`](novaberg-agent-dateien_e.md) · Messungen: [`novaberg-agent-dateien_m.md`](novaberg-agent-dateien_m.md). Die Abschnittsnummern sind die des ungeteilten Konzepts; welche Datei einen Abschnitt trägt, sagt die Tabelle *„§ → Datei“* in `_k`. Das Konzept führt keinen eigenen Bauplan mit `ZIEL` / `TEST` / `MESSUNG`; seine Stufen stehen in der Featureliste (*Dateien-Dienst — Stufe 0* bis *Stufe 5*). Hier stehen der Baustand, den das Konzept selbst führt, die Bauberichte und die Versionshistorie. --- ## Aus §1a.5 ### 1a.5 Nicht jede Wurzel trägt fremdes Material (22.08.2026) Der übrige Abschnitt steht in [`novaberg-agent-dateien_t.md`](novaberg-agent-dateien_t.md). > ~~**Der Zustand am Tag des Baus: gebaut, bezeugt, ohne Eingabe.**~~ → **Am 22.08.2026 aufgehoben: die dritte Wurzel steht.** `/knowledge/autonomous/nova/meister`, `eigentum='figur'`, 1008 Dateien — angelegt über den Dienstweg, mit der Frage nach dem Eigentümer und der Antwort darauf. **Was noch fehlt, ist der Indexlauf**; bis er durch ist, hat der Index von diesen Dateien keine Zeile. > > **Der Außenrand zeigt auf das Paar, nicht auf den Speicher** (`DATEIEN_AUSSENRAND`, docker-compose). Im echten Auslösefall belegt: `/knowledge` abgewiesen, `/knowledge/autonomous/nova` abgewiesen, `/knowledge/autonomous/nova/meister` bis zur Eigentumsfrage durchgelassen. **Der Rand ist die Wand, nicht die Sorgfalt** — läge er auf `/knowledge`, wäre die Freigabe fremden Materials ein Satz im Gespräch. > > **Sein Preis ist benannt: Der Rand prüft den Pfad, nicht das Paar.** Er ist global; ein zweites Paar braucht einen zweiten Eintrag, und wer den Pfad kennt, könnte dieses Verzeichnis für sein eigenes Paar freigeben. Steht in der Fundliste. > > **Der ursprüngliche Zustand, als Beleg dafür, was der Zugriff fand:** Der Wissensspeicher war **keine** Wurzel des Index — er ist unter `/knowledge` eingehängt (`F-WISSEN-1`) und trägt 1075 Dateien, aber der Index kennt nur `/files` und `/docs`. Am Bestand gemessen: 174 Indexzeilen, beide Kanäle liefern je 3 Treffer, **alle mit `eigentum='nutzer'`**. Solange die dritte Wurzel fehlt, kann `[EIGENE FUNDE]` im Betrieb nicht entstehen. --- ## Aus §3a ## 3a. Sie muss schreiben können — nicht ablegen, sondern redigieren Die übrigen Unterabschnitte stehen in [`novaberg-agent-dateien_t.md`](novaberg-agent-dateien_t.md). ### 3a.1 Was gebaut ist und was fehlt | Werkzeug | Aufgabe | Stand | |---|---|---| | `schreibziel_pruefen` | Grenzprüfung des Schreibziels | **gebaut** | | `datei_schreiben` / `datei_lesen` | ganze Datei | **gebaut** | | `struktur_analysieren`, `block_lesen`, `zeilen_lesen`, `datei_grep` | die Karte und der gezielte Blick | entworfen | | `block_ersetzen`, `block_anfuegen`, `block_einfuegen`, `metadaten_aktualisieren` | die chirurgischen Schnitte | entworfen | | `str_replace_in_block` | feinkörnig, mit Eindeutigkeitsprüfung | entworfen | **Sie kann heute eine Datei anlegen und überschreiben — sie kann keine bearbeiten.** > **Und der Ersatzweg ist kein Ersatz, sondern die gefährlichere Bauart.** Wer eine Datei erweitern will und nur „ganz schreiben" kann, muss sie vollständig durch das Modell schicken und neu erzeugen. Das ist teuer — und es ist **verlustbehaftet ohne Alarm**: Eine Neuerzeugung, die einen Absatz fallen lässt, sieht aus wie eine Neuerzeugung. Es gibt keinen Zeugen auf dem Inhalt einer Wissensdatei, der das bemerken würde. > > Genau dagegen ist `str_replace_in_block` entworfen: Es prüft die Eindeutigkeit der Fundstelle und **scheitert laut**, wenn sie mehrfach vorkommt, statt eine Stelle zu raten. Das ist dieselbe Haltung, die im ganzen System gilt — ein Fehlgriff soll auffallen, nicht durchgehen. --- ## Aus §4b ## 4b. Der Rückweg: Wissen aus dem Gespräch in die Dateien Der Abschnitt selbst steht in [`novaberg-agent-dateien_t.md`](novaberg-agent-dateien_t.md); hier der Kasten an seinem Kopf. > **Gebaut am 18.08.2026, und der Weg steht** (`agents/wissen_rueckweg/`). Ein Fund, den die Promotion ins Langzeitgedächtnis getragen hat, wird einer vorhandenen Wissensdatei zugeordnet und dort **eingearbeitet** — mit Marke, umkehrbar, und die Bibliothekszeile zieht nach. **Gemessen an zwei echten Läufen gegen den Bestand:** > > | Lauf | 8 Kandidaten, bester Kosinus | Ergebnis | > |---|---|---| > | Salienzschwelle und Fristen | 0,3137 | **keine Datei passt** — mit Begründung, nichts geschrieben | > | Sättigung der Kennlinie | 0,4529 | `[i1>]` in die Datei, Version 1.0 → 1.1, Häufigkeit 1 → 2 | > > **Der erste Lauf ist der wichtigere.** Er zeigt den Ausgang, den §4a verlangt: *„keine passende Datei"* ist eine vollwertige Antwort, und der Aufruf hat sie mit einem Satz begründet, statt den nächstgelegenen Vektor zu nehmen. Im zweiten Lauf stand der neue Absatz **zwischen** der Definition und ihrem Beleg — nicht am Ende, und das ist die ganze Aussage von §4b.3. > > **Beide Wege aus §4b.1a sind seit dem 19.08.2026 verdrahtet** — das Überlebende schneidet, das Zugehörige verstärkt. Der dritte, das Einprägsame, ist entfallen: Seine Schwelle war die der Promotions-Queue, gemessen an 88,3 % des Bestandes. --- ## Aus §7 ## 7. Die Grenze wird erzwungen, nicht deklariert Der Abschnitt steht in [`novaberg-agent-dateien_t.md`](novaberg-agent-dateien_t.md). Der Kasten gehört dort unter Regel 3 a) *„Ein konfigurierter Außenrand“*. > **Gebaut am 18.08.2026:** `DATEIEN_AUSSENRAND` in `server/config.py`, eine kommagetrennte Liste von Behälter-Pfaden, Vorgabe `/files`. Die Rückrichtung stand zuerst nicht da — die Konfiguration verwies auf diesen Abschnitt, dieser Abschnitt nannte den Variablennamen nicht, und damit war die Naht nur von einer Seite begehbar. **Ein leerer Rand bedeutet, dass nichts freigebbar ist, und nicht, dass alles erlaubt wäre**: Der Wachtposten fällt geschlossen aus, und der Zustand wird gemeldet statt geraten. > > **Der Rand hat seit dem 20.08.2026 zwei Einträge, und der zweite ist die Doku selbst.** `/files,/docs` — `/docs` hängt das Dokumentationsverzeichnis des Repositoriums ein, lesend, damit die Figur die Dokumente über sich selbst lesen kann. Gemessen am selben Tag: Das Tor meldete `'/docs' -> '/docs' innerhalb von /files, /docs, 166 Dateien`, und die Zahl stimmt mit der am Wirt gezählten überein — das ist zugleich die Probe darauf, dass der Einhängepunkt dort liegt, wo er soll. > > **Die Zusammensetzung des Randes ist eine Eigenschaft der Aufstellung, nicht des Codes.** Der Vorgabewert in `config.py` bleibt `/files`; welche Behälter-Pfade es überhaupt gibt, weiß allein die Compose-Datei, und dort steht deshalb auch die Liste. Wer einen Einhängepunkt hinzufügt und den Rand stehenlässt, hat ein Verzeichnis eingehängt, das niemand freigeben kann — der Ausfall ist die **Ablehnung am Tor** und nicht ein stiller Zugriff, also fällt er zur geschlossenen Seite. > > **Was mit `/docs` neu ist und in `/files` keinen Vorläufer hat:** Der Bestand hinter dem Rand ist hier **versioniert und öffentlich**, und er enthält unter `archive/` abgelöste und verworfene Konzepte. Der Einhängepunkt ist `:ro` — die Zusicherung aus Regel 2 trägt das Dateisystem und nicht nur der Import —, aber die zweite Hälfte ist keine Rechtefrage: **Ein archiviertes Konzept sieht im Index aus wie ein geltendes.** Getrennt sind beide allein durch den Pfadanteil `archive/`; ein Etikett am Indexeintrag gibt es nicht. --- ## Versionshistorie - **v0.17 — 18.08.2026, spät:** **Der Rückweg ist gebaut** (§4b) — Zuordnung über die Zusammenfassungen, Einarbeitung mit chirurgischem Schnitt, Verstärkung der Bibliothekszeile. Zwei Läufe gegen den echten Bestand: einer schrieb nicht und begründete es, einer setzte `[i1>]` zwischen Definition und Beleg. **Der Turnbezug fehlte und ist ergänzt**: Ohne ihn wäre die entschiedene rohe Fassung nicht adressierbar gewesen. **Ein Zuschnitt, ausdrücklich:** Von den drei Wegen ist das Überlebende verdrahtet, die beiden anderen nicht. Suite 1883 → 1909. - **v0.16 — 18.08.2026, abends:** **Der lesende Dienst hat seinen Aufrufer** — Aushang (`plugins/dateien_manager/`), Klassifikation, Dispatch und Auskunft. Damit ist §8.1a von einer Begründung zu einer **Messung mit zwei Läufen** geworden: derselbe Bestand, dieselbe Sache gefragt, ein Bauteil Unterschied — vormittags *„eine bestimmte kritische Marke"*, abends *„unter `/files/kzg-salienz.md` […] **0,67379**"*. **Neu §8.1b**, und der Anlass ist der erste Messturn desselben Abends: Die Nadel sucht zeichengenau, ein deutsches Kompositum aus der Frage steht so im Text fast nie, und der Dienst ging in den vierten Ausgang — richtig, aber eine Frage später als nötig. Die Abhilfe ist **mehr als ein Versuch**, nicht eine unschärfere Suche. **Zwei Fragen aus §9 sind beantwortet:** die Textfassung (**die rohe**, auch beim Recherche-Weg — die eigene Sprache entsteht beim Antworten, nicht beim Ablegen) und der Übergang von Dateiinhalt ins Gedächtnis (**er darf**, kein Tor). **Der Bedarf hat seine Zusage**: `such_vektor` steht im Katalog, der Handshake prüft die Naht. Suite 1841 → 1883. - **v0.15 — 18.08.2026:** **Der Enricher-Weg ist zweikanalig** (§6.3a), und der Anlass ist eine Widerlegung am selben Tag. Sobald der Korpus **heterogen** war — zehn Sachdateien dazu, 13 Zeilen —, fiel die Töpferfrage mit **0,2899** unter den vormittags gemessenen Boden von 0,30, während eine Frage ohne Gegenstand **0,2515** erreichte: **die Lücke schrumpfte von 0,18 auf 0,038.** Der Vorbehalt, der an der Zahl in `config.py` stand, hat genau das vorhergesagt — und die Abhilfe ist nicht die nächste Zahl, sondern der zweite Kanal. **Der Grund liegt in der Mittelung:** `Schrühbrand` steht in den Stichwörtern der Datei, und ein passender Begriff unter acht bewegt den Vektor nicht weit genug. Der lexikalische Kanal findet ihn; über acht Fachbegriffe trafen **sieben genau eine Datei, und die richtige**. **Eine Berichtigung steckt im Bau:** Die erste Fassung matchte gegen den ganzen `suchtext` und antwortete auf die Töpferfrage mit einer Sterndatei, weil *„Temperatur"* dort in der Zusammenfassung steht und nur 1 von 13 Dateien trifft — **Seltenheit ist nicht Einschlägigkeit**, und der Treffer verlangt seither zusätzlich die erhobenen Stichwörter. **Der Boden bleibt und behält sein Amt für den dense Kanal**; der scharfe kennt ihn nicht, weil ein exakter Begriff nicht schätzt. Gemessen: zwei Treffer bei **0,1901** und **0,2148** fand nur der scharfe Kanal, und eine Frage, deren Stichwort das Erschließungsmodell verstümmelt hatte, fing der dense bei 0,4904 auf — **die beiden sind gegenseitige Absicherung, nicht Redundanz**. **Dazu die halbe Stufe 4:** `agents/dateien/suche.py` und `zoom.py` stehen, gegen den echten Bestand gemessen, und haben **keinen Aufrufer**. **Der Befund, der das begründet, ist gemessen und nicht argumentiert** (§8.1a). - **v0.14 — 18.08.2026:** **Der Rückweg hat seinen Zuschnitt** (§4b.1, §4b.1a, §4b.1b). Die Salienz-Lesart aus §9 Punkt 8 ist beantwortet und die Antwort ist gemessen: **es gilt die rohe Skala.** An 2394 Einträgen des laufenden Bestandes nimmt eine Schwelle von 0,7 auf der *wirksamen* Skala 95 bis 100 % — dort trennt sie nichts, weil die Kurve oben staucht und `KZG_SALIENZ_MINIMUM` unten abschneidet; das gemessene Minimum von 0,674 ist deshalb **das Tor und kein Verteilungsergebnis**. Auf der rohen nimmt dieselbe Zahl 59 % und 82 %. **Daraus drei Wege, und nur einer trägt eine Schwelle:** das Einprägsame über `salienz_roh ≥ 0,7`, das Überlebende über die **vorhandene** Promotion ins Langzeitgedächtnis, das Zugehörige über **Zuordenbarkeit ohne jede Schwelle**. Der zweite Weg löst das Problem, das er zu stellen schien: Ein Fund, der sich über Tage bewähren soll, braucht keinen zweiten Speicher — das Kurzzeitgedächtnis *ist* der Warteraum (7 bis 30 Tage), die Promotion *ist* die Bewährungsprüfung. Der dritte ist eine Berichtigung am naheliegenden Entwurf: `autonomous_wissen` liegt bei **min 0,944, Median 1,000, 100 % ≥ 0,7**, eine Bedingung *„das Ziel hat Salienz ≥ 0,7"* wäre dort eine Tautologie — was trägt, ist die Zuordnung nach §4a.1, und die ist keine Schwellenfrage. **Die Promotion bekommt ein drittes Schreibziel** und holt den Text; beide Fassungen sind erreichbar, denn das `pipeline_log` hält 365 Tage gegen die 7 bis 30 des Kurzzeitgedächtnisses (91 121 Zeilen, nichts abgeräumt). **Neu offen als §9 Punkt 9: welche der beiden Fassungen eingearbeitet wird** — §4b.3 spricht für die rohe, der Preis je Aufruf dagegen. **Ein Nebenbefund gehört zur Entscheidung:** 2234 der 2394 Einträge sind `assistant`, eine rein salienzgetriebene Rückschreibung schriebe also überwiegend die eigenen Formulierungen der Figur zurück. - **v0.13 — 18.08.2026:** **Stufe 3 ist gebaut, und eine indizierte Datei erreicht damit zum ersten Mal die Figur.** Der Enricher fragt den Index in jedem Turn über denselben `such_vektor` ab, mit dem KZG, LZG und die Bibliothek suchen; die Treffer laufen über einen **eigenen Zustandskanal** in den Block `[AUFZEICHNUNGEN]` des Verfassers. **Der eigene Kanal ist die tragende Entscheidung und keine Bauform:** Ein Plugin hätte `ContextEntry` in den `memory_entries`-Pool geliefert, und alles aus diesem Pool rendert der Formatter unter `[GEDAECHTNIS]` — also unter der Beschriftung „das ist ihre Erinnerung". Genau das verbietet §1a.2, und der Präzedenzfall steht offen im Bestand. **Der Wortlaut des Blocks aus §1a.2 ist beim Bauen ersetzt worden**, die drei tragenden Eigenschaften nicht: `F-PROMPT-1` verlangt Führung statt Verbot, und die Struktur trägt hier bereits — der Block *ist* ein anderer Block. **Zwei Zahlen sind entschieden statt gemeldet:** `K = 3` als Platzfrage, und der absolute Boden **0,30 als Messung** aus acht Sonden mit beiden Seiten (einschlägig ab 0,3800, fremd bis 0,2014). Die Messbedingung steht an der Zahl in `config.py` — der Fehler, an dem die übernommene 0,40 gescheitert ist, war nicht die Zahl, sondern der verlorene Vorbehalt. **Gegenprobe zweimal, beide vorhergesagt und gezählt:** Verdrahtung entfernt → 5 von 5; Treffer in den Gedächtnisblock umgeleitet → 3 von 3, und dabei blieben zwei Zeugen grün, die den Verstoß nicht sehen können, weil sie prüfen, *dass* der Text im Prompt steht und nicht *wo*. **Im Betrieb gemessen:** einschlägiger Turn 3 Treffer (0,4752 bis 0,3780), Fremdthema 0 Treffer über dem Boden — und in Novas Antwort standen alle drei Fundstellen im Wortlaut, womit auch §1a.4 belegt ist. **Offen bleibt die Quantilschwelle:** Sie ist das Quantil der mitlaufenden Verteilung, und diese Verteilung beginnt erst mit diesem Bauteil zu entstehen. - **v0.12 — 18.08.2026:** **Stufe 2 ist gebaut und am echten Bestand gemessen** — der Wächter mit den drei Wegen aus §5.1, Indextabelle mit 20 Spalten, 18 Zeugen. Er ist der **erste Produktivaufrufer der Werkzeugschicht**: `struktur_analysieren` füllt die Blockkarte jeder Zeile. **§5.2 ist dabei in einem Punkt geschärft, und der Bau hat es auf die harte Tour gelernt:** Der Abschnitt schreibt `mtime` als Vorfilter und den Inhalts-Hash als Entscheidung vor — ein Vorfilter über Zeit und Größe lässt aber genau die Änderung durch, die derselbe Abschnitt zwei Sätze vorher als Grund nennt, warum die Zeit nicht reicht: dass ein Werkzeug eine Datei mit gleicher Zeit neu schreiben kann. Ein Zeuge wurde rot und hatte recht. **Der Vorfilter ist entfallen**; jede Datei wird gehasht. Der Verzicht kostet fast nichts, weil das Teure der Modellaufruf je geänderter Datei ist und nicht das Lesen — und der bleibt vom Hash bewacht. Am Bestand belegt: gleiche Größe, gleiche `mtime`, anderer Inhalt → erkannt. **§5.4 ist vor dem Bau eingelöst worden:** Die Einbettung wurde gegen den Zielkorpus geprüft — 768 Dimensionen, `Hund` und `Katze` nicht bit-identisch (0,306), Spanne von 0,036 (fachfremd) bis 0,436 (verwandte Form), Median **0,091**. Damit ist auch die Vorhersage aus §3.0a gemessen: Der eigene Korpus zeigt eine **vierfach niedrigere** Grundähnlichkeit als die Bibliothek (0,369) — hier kann eine Schwelle trennen, wo sie es dort nie konnte. **Zwei Dinge stehen ausdrücklich als nicht gebaut da:** der Takt (§8.3 verlangt die Änderungsrate, die ist nicht erhoben) und `zuletzt_gelernt_hash` (die Spalte steht, der Schreiber gehört zum frühen Tor). - **v0.11 — 18.08.2026:** **Stufe 1 ist gebaut, gemessen und im Betrieb belegt** — `dateien_wurzeln` mit fünf Aktionen, Tor, Außenrand und Rückweg; 48 Zeugen, Tabelle steht, Zeile 1 aus einem echten Turn. Der Zustandsteil ist entsprechend neu gefasst: Was gebaut ist, steht mit Beleg da, und was fehlt, steht mit einem `grep`-Ergebnis daneben statt mit einer Behauptung. **Der Betrieb hat zwei Befunde geliefert, die 46 grüne Zeugen nicht hatten:** Die Randablehnung kam als `status='fehler'` zurück statt als `abgelehnt` — Verstoßform 8.5 der Anmeldekonvention, also genau die Regel, gegen die dieser Dienst gebaut wurde; und die Ja/Nein-Deutung am Tor las eine Zustimmung als Ablehnung, weil sie Teilzeichenketten verglich und `ne` in `gerne` steckt. Beide behoben, beide nachgemessen. **§7 ist damit nicht mehr nur Entwurf:** Die drei Riegel — konfigurierter Rand, Tor auf dem aufgelösten Pfad, Auflösung vor der Prüfung — sind gebaut, und die Gegenprobe hat sie mit 5 vorhergesagten und 5 gezählten roten Zeugen belegt. **§9 Punkt 1 ist beantwortet:** Die erste Wurzel ist nicht die Projektdokumentation, sondern ein eigens angelegtes, read-only eingehängtes Verzeichnis neben dem Repositorium — dieselbe Begründung wie bei `knowledge/` und `labor/log`. Damit ist §10 (die Figur liest über sich selbst) auf einen späteren Zeitpunkt verschoben und nicht beiläufig mitentschieden. - **v0.10 — 18.08.2026:** **Die Werkzeugschicht ist gebaut, und die Recherche hat den Entwurf an zwei Stellen umgeworfen.** Gebaut und bezeugt: Leseschicht, Schreibschicht, Versionierung und die Auftragsform `DATEI: {json}` — 88 Zeugen, dazu die Schreibvorlage, die seit dem 18.08. **produktiv** jede neue Wissensdatei mit `## AKTUELL` und Version anlegt (an 10 Dateien belegt). **Was fehlt, ist der Aufrufer:** kein Knoten ruft die Werkzeuge, keine Anleitung steht in einem Prompt. **Erste Umwerfung — die Zuordnung ist keine Ähnlichkeitsfrage** (§4a). Ein Embedding misst Wortwahl, nicht Zugehörigkeit: *„Napoleons Feldzüge in Ägypten"* liegt näher an Napoleon, weil *„Feldzüge"* ein Napoleon-Wort ist. Und die Frage hat **zwei richtige Antworten**. Der Stand der Technik entscheidet deshalb mit einem **Planer auf den Zusammenfassungen** und nach **Pflegbarkeit** statt Nähe — *„the one in which the block can be maintained together with related evidence"* —, und teilt mehrdeutige Inhalte nach Thema, statt sie zu verdoppeln. **Damit entfällt die dritte Schwelle, die v0.9 messen wollte:** Es gibt nichts zu kalibrieren, weil es keine Schwellenentscheidung ist. **Zweite Umwerfung — die Bibliothek hat nur einen von drei Kanälen** (§6.1). Lexikalisch, dense und Graph laufen im Stand der Technik nebeneinander; `autonomous_wissen` trägt allein `themen_embedding`, während `notizen` und `lzg_knoten` `suchtext` und `entitaet_ids` längst führen. Und es ist der schwächere: Hybrid liegt bei 0,7497 NDCG gegen 0,6983 (BM25) und 0,6953 (Vektor), **und die lexikalische Suche ist bei kleinen Korpora relativ wertvoller** — die Bibliothek trägt 234 Dateien. Verschmolzen wird über **Ränge**, nicht über Werte; ein Mittelwert über zwei Skalen vergleicht Unvergleichbares. **Daraus die DDL** (§4.1): `entitaet_ids`, `timeline_id`, `stichwoerter`, `suchtext` — vier Spalten, nullable, angekündigt. `timeline_id` ist der Eingang der Regel *„das Neuere sticht"*, ohne die Entity-Drift nicht auflösbar ist. **Neu §4b — der Rückweg**, der heute vollständig fehlt: `ergebnis_ablegen` hat genau einen Aufrufer, den Recherche-Agenten. Dabei zwei Befunde: Die **Salienz hat zwei Skalen** (`sin(roh·π/2)^0,5`, nachgerechnet), und „ab 0,7" heißt entweder 0,70 — knapp über der Erinnerungsschwelle 0,674, also fast jede Erinnerung — oder roh 0,7 = **0,944**, nur die Spitze; die Lesart entscheidet die Betriebskosten und ist offen. Und die **Verstärkung ist bereits gebaut** (`haeufigkeit`, `gewicht_roh` + Boost, `verstaerkt_am`) — der Rückweg müsste sie nur auslösen. **Einarbeiten ist dabei das Gegenteil von Destillieren:** anreichern an der richtigen Stelle, nicht verdichten. **Neu §4c — der Reducer darf Etiketten nicht einebnen.** Er dedupliziert rein inhaltlich, und der längere Eintrag gewinnt; ein Dateiauszug ist fast immer länger als ein Gedächtnissatz. Damit verdrängte die Datei die Erinnerung **und erbte deren Etikett** — §1a von hinten ausgehebelt. Der Dedup gehört je Quellenklasse, **und diese Änderung vor das Plugin**. **§6 neu gefasst:** die drei Stufen bleiben als *Zoom*, nicht als *Suche*; gemessen über 689 Dateien sind die Blöcke Median **4 Zeilen**, größter 7, und **kein einziger** überschreitet das Fensterlimit. - **v0.9 — 17.08.2026:** **Der dritte Zugang ist kein neuer Apparat, sondern die Recherche mit lokaler Quelle** — Studieren, Destillieren, Keep/Discard-Gate und Ablage laufen seit dem 04.08.2026, und das Gate stellt bereits die richtige Frage (*„steht im Destillat etwas, das über Novas Vorwissen hinausgeht?"* mit `echte_tiefe` / `ergaenzung` / `wiederholung`). Neu sind Quelle und **ein** Torschritt. **Das frühe Tor sitzt an der Bibliothek, nicht an den Assoziationen** (§3.0d): Nur an einem ausformulierten Text lässt sich Vollständigkeit beurteilen; ein Assoziationsnetz kann dicht sein, ohne dass ein Gedanke ausgearbeitet wäre. **Und eine Lücke ist Abwesenheit ODER Widerspruch** — die naheliegende Fassung hätte einen selbstverschließenden Fehler gehabt: Wer glaubt, ein Thema zu kennen, öffnet die Datei nie, die ihn korrigiert, und der Konfliktfall aus §1a.2 könnte nie eintreten. Der Widerspruch ist an der Zusammenfassung prüfbar und kostet keinen Dateizugriff. **Damit ist §9.6 erledigt: Es braucht keine Qualitätszahl, das Kriterium ist die Lücke und nicht die Nähe.** — **Drei Zustände statt zwei** (§1a.3): Beilage, **Auskunft** und Erarbeitetes. Der mittlere war nie benannt und ist der häufigste: Sie kann aus einer Datei antworten, **ohne zu lernen**; das Wissen bleibt liegen und ist beim nächsten Mal genauso erreichbar. **Dazu ein vierter Weg, den kein Tor bewacht** (§1a.4): Jede Antwort läuft durch den Gesprächsgraphen und wird bei hoher Salienz gespeichert — an Lückenprüfung und Gate vorbei. Gespeichert wird ihre **Formulierung**, deren Inhalt aus der Datei stammt. **Daraus die zweite und wichtigere Aufgabe der Blockbeschriftung: Sie ist das Einzige, was die Herkunft über den Gedächtnis-Übergang trägt.** *„X ist so"* verliert sie, *„ich habe Aufzeichnungen, die sagen X"* trägt sie. Der teuerste Fall ist die Selbstbeschreibung — die Doku besteht großenteils aus Konzepten, und über diesen Weg lernt sie Fähigkeiten zu haben, die es nicht gibt, und behauptet sie danach ohne jeden Dateizugriff. **Neu §3a — sie muss redigieren können, nicht ablegen.** Lebendes Wissen entsteht durch Weiterarbeiten an einem Gegenstand, nicht durch eine neue Datei je Durchlauf. Gebaut sind `datei_schreiben`, `datei_lesen`, `schreibziel_pruefen`; entworfen und fehlend sind Karte, gezielter Blick und die chirurgischen Schnitte. **Der Ersatzweg ist die gefährlichere Bauart:** Wer nur ganz schreiben kann, erzeugt die Datei neu — teuer und **verlustbehaftet ohne Alarm**, denn auf dem Inhalt einer Wissensdatei steht kein Zeuge. **Ein Werkzeugsatz, vier Abnehmer** (§3a.2): sie als Verfasserin, `WIS-8-STUFE-2` (wartet seit dem 04.08. auf genau diesen Lesepfad), Stufe 3 dieses Konzepts, und der Studien-Durchlauf. Die Rechte bleiben getrennt und die Trennung hängt an der Zone, nicht am Aufrufer (§3a.3): Ihre Aufsätze über sich selbst darf sie schreiben, das Dokument nicht, aus dem sie sie gewonnen hat. **Neu §5.2a — der Wächter ist zugleich der Wiedereröffner:** Eine geschlossene Lücke bliebe sonst für immer zu und ihr Wissen selbstbestätigend; ein geänderter `inhalt_hash` öffnet sie wieder. Dafür trägt die Indexzeile eine Angabe mehr — welcher Hash galt, als zuletzt daraus gelernt wurde —, sonst ist *„geändert seit dem Lernen"* nicht von *„nie gelernt"* zu unterscheiden. **Darin liegt die Überlegenheit der Datei über die Websuche:** Was im Netz stand, ist später nicht mehr auffindbar; die freigegebene Datei wird beobachtet. **Zwei neue offene Fragen** (§9.7, §9.8): wo ein neuer Text entsteht statt einen bestehenden zu erweitern, und was mit Gelerntem geschieht, dessen Quelle sich als falsch erweist. - **v0.8 — 17.08.2026:** **Der Konstruktionsfehler war nicht der Wert, sondern die Bauart — eine Konstante.** Eine feste Schwelle über einem wachsenden Bestand kann nicht halten: Die Trefferzahl über einem festen Kosinus wächst mit dem Bestand mit, und die Bibliothek hatte bei Einführung der 0,40 **drei Zeilen** und hat heute **217**, gewachsen in dreizehn Tagen. Die 0,40 war richtig, als sie gerechnet wurde, und **musste** falsch werden; eine bessere Konstante kauft nur Zeit. **Daher: den Rang festhalten, nicht den Abstand** — `Schwelle = Quantil(1 − K/N)`. Die Gegenprobe stimmt: N = 217, K = 3 → p98,6 → **0,55**, genau der ausgezählte Wert. Damit sind Kappung und Schwelle über `K/N` gekoppelt und §9.5 ist umgestellt: offen bleibt nur `K`, und das ist eine Platzfrage. **Die Verteilung fällt umsonst an und ohne Stellvertreter** — jeder Turn rechnet den Kosinus gegen den ganzen Bestand, bevor gefiltert wird; wer je Turn den K-ten Wert mitschreibt, sammelt die echte Paarung Anfrage × Eintrag. *Kalibrieren ist ein Ereignis und altert; eine mitlaufende Verteilung ist der Bestand von heute.* **Dazu die Grenze, ohne die das überschätzt wird: Eine Quantilschwelle liefert immer etwas.** Sie kann *„hier ist nichts Passendes"* nicht ausdrücken und liefert zu einer fremden Frage die besten drei Fehltreffer — bei einem Block, der *„ich habe hier Aufzeichnungen"* ermöglichen soll, der teuerste Fehler. **Deshalb zwei Zahlen mit zwei Ämtern:** das Quantil sagt *wie viele*, ein absoluter Boden sagt *ob überhaupt*. Der Boden ist die Cold-Start-Zusicherung und neu offen. Und die Quantilschwelle sichert eine **Rate** zu, nie eine **Qualität** — als Beleg für die Güte des Zugriffs wäre sie ein Zirkel. **Zweitens ist die Deutung des Medians berichtigt:** 0,369 sagt nichts über das Einbettungsmodell, sondern über den Korpus. Alle 217 Einträge sind `recherche` in **einem Register** — abstrakte Reflexionen über die Gespräche selbst, kein Wissen über die Welt. Ein homogener Korpus hat hohe Grundähnlichkeit, und eine Schwelle darauf misst die Zugehörigkeit zur Textsorte, die alle teilen. **Für den Dateien-Index kehrt sich die Richtung damit um:** Fachtexte, Tabellen und Codeblöcke sind heterogen; dort kann eine Schwelle trennen, wo sie hier nie konnte — und der eigene Korpus wird vermutlich eine **niedrigere** Grundähnlichkeit zeigen als die Bibliothek. - **v0.7 — 17.08.2026:** **Der Präzedenzwert 0,40 ist widerlegt, und der Fund ist nicht die Zahl, sondern ein verdunsteter Vorbehalt.** Der Wert hat eine Herkunftskette: Im Ankerabruf des Langzeitgedächtnisses ist er **kalibriert** (100 echte Prompts gegen 302 Knoten, 0,40 → 82 % Abdeckung bei 4,1 Ankern) und trägt dort die Marke *„begründeter Startwert, kein Verteilungs-Messergebnis"*. Die Bibliothek hat ihn **übernommen** und sagt es auch — *„NICHT gemessen"*, mit Grund und offenem Backlog-Eintrag. **Erst dieses Konzept nannte ihn in v0.5 „ein gemessener Wert".** Zwei Code-Stellen waren ehrlich; übernommen wurde die Zahl, nicht der Satz daneben. Die Messung gibt der Übernahme quantitativ Unrecht: Im Knotenraum qualifiziert 0,40 rund **1,4 %** des Bestandes, in der Bibliothek **35,6 %** — derselbe Embedding-Raum, **Faktor 26**. Eine Schwelle ist keine Eigenschaft des Raums, sondern des Raums **und** der Dichte des Korpus darin. Gegen den laufenden Bestand gemessen: In **40 von 42** protokollierten Bibliotheksaufrufen kamen genau drei Treffer zurück — so viele, wie die Kappung zulässt. **Die Schwelle hat nie gegriffen, die Kappung hat gegriffen**, und ein Boden, den niemand berührt, belegt nichts. Die Geometrie des Korpus bestätigt es von der anderen Seite: 217 aktive Einträge, 23.436 Paare, **Median 0,369** — **35,6 % aller Paare liegen über 0,40**, also rund 77 von 217 Einträgen je Abfrage. Gerechnet trifft erst **0,55** die drei Treffer, die tatsächlich geliefert werden, und der gemessene Median des dritten Treffers (**0,588**) trifft sich damit. **Die wirksame Schwelle der Bibliothek ist 0,55; die konfigurierte ist Zierde.** Daraus drei Änderungen: Der Index startet bei **0,55**; er bekommt eine **Kappung**, die dieses Konzept bis v0.6 überhaupt nicht kannte — es hatte von der Bibliothek die Schwelle übernommen und den Mechanismus weggelassen, der dort die Arbeit tut (bei 667 Dateien hätte 0,40 rund **237** je Turn qualifiziert); und der Enricher-Weg protokolliert Trefferzahl **und** schlechtesten gelieferten Kosinus, damit *„die Kappung greift dauerhaft"* sichtbar wird statt still zu bleiben. **Zweitens ist die Diagnose zur Selbstauslösung nur halb gewesen:** Nicht nur das Budget ist geteilt, sondern das **Tor**. Die Lückensuche hängt an `aufnahmebereitschaft > 0`, die Selbstauslösung an einem Zähler und einem Riegel auf wartende Agenten — **keine Bereitschaft**. Heute ist das richtig, weil der einzige Aufrufer die Reparatur ist und **eine Reparatur in der Krise feuern muss**. Für die Vertiefung gilt das Gegenteil: *„lass mich nachsehen"* ist in einem Gespräch über Quarks eine Auskunft und in einem Absturz eine Zumutung. **Dieselbe Schranke, die für die Reparatur zu eng wäre, ist für die Vertiefung notwendig** — der Riegel hängt deshalb am Grund, nicht am Mechanismus, und die Vertiefung wird nicht als zweiter Aufrufer der Selbstauslösung gebaut. **Zwei neue offene Fragen** (§9): die Höhe der Kappung, und woraus sich die Trefferqualität ergibt, die der Block ausweisen soll — der rohe Kosinus taugt dafür nach dieser Messung nicht, weil niemand seine Skala kennt. - **v0.6 — 17.08.2026:** **Die Vertiefung füllt den Vorrat, nicht die Antwort** — die Beschränkung, ohne die dieses Konzept gegen die Gedankenkette arbeitet. Deren Satz trifft den zweiten Durchlauf unmittelbar: *„Wer hier den Aufsatz einsetzt, hat die Treppe gebaut und oben doch die Ablage abgeladen."* Was die Vertiefung vergrößert, ist was Nova **weiß**, nicht was sie **sagt**; das gesammelte Material ist der Vorrat, aus dem sie schöpft, und nicht der Entwurf, den sie vorliest. **Der Längenregler allein reicht dafür nicht, und das ist gemessen:** Über zehn Turns des produktiven Paares schwankt die Vorgabe um den Faktor 1,50, die Antwortlänge um 3,93 — und bei **identischer** Vorgabe (0,652, fünf Turns) noch um 2,68, von 813 auf 2181 Zeichen. Die Richtung stimmt (r = +0,78), die Bindung fehlt. **Eine Zahl bindet nicht, eine Struktur bindet:** Die Treppe aus Ruf, Feld und Fund ist ein Ablauf, in den der Aufsatz nicht hineinpasst, weil zwischen jeder Portion eine Freigabe steht. - **v0.5 — 17.08.2026:** Zwei Berichtigungen gegen den Bestand. **Die Schwelle hat einen Präzedenzwert:** Die Bibliothek sucht in jedem Turn über dasselbe Themen-Embedding und liegt bei **0,40** — deutlich niedriger, als eine Schätzung ausgefallen wäre, und damit die Warnung aus §3.0a von der anderen Seite bestätigt. Der Index startet dort, nicht weil der Wert richtig ist, sondern weil ein gemessener Wert eines anderen Korpus ein besserer Anfang ist als eine Schätzung. **Und die Gedankenkette benutzt die Selbstauslösung nicht** — sie hängt am Impuls-Stapel mit einer eigenen Schranke. Für den Menschen ist *„sie macht weiter"* ein Verhalten; im System sind es zwei Mechanismen mit zwei Schranken, die nichts voneinander wissen. Die Vertiefung dieses Konzepts gehört zur Selbstauslösung — sie ist ein zweiter Anlauf auf dieselbe Frage, keine Fortsetzung über den Turn hinaus. Beide Schranken zählen dabei die falsche Einheit: die eine alle Gründe gemeinsam, die andere Zustellungen statt abgeschlossener Gedanken. - **v0.4 — 17.08.2026:** **Ein dritter Zugang zwischen Beilage und Auftrag** (§3.0b): Nova entscheidet mitten im Turn, dass ihr die Zusammenfassung nicht reicht, und liest nach. **Die Maschine dafür existiert** — Selbstauslösung samt Nutzlast, Ereignis-Consumer und eine Schranke von drei je Turn. Heute hat sie genau einen Aufrufer, und der zeigt zugleich, was zu ändern ist: Der Denkknoten setzt sie nach einem **Doppel-Fehlschlag** und hängt eine überbrückende Geste an. **Der Dateien-Fall ist derselbe Mechanismus mit umgekehrtem Vorzeichen — keine Reparatur, sondern eine Vertiefung.** Daraus drei Folgen, zwei davon Fallen: Die Geste wird **ehrlich statt überbrückend** (*„ich habe dazu Aufzeichnungen — lass mich nachsehen"* ist wahr und erklärt die Pause); die **Nutzlast muss die Kandidaten tragen**, sonst beginnt der zweite Durchlauf bei null und findet über dasselbe Embedding dieselbe Zusammenfassung wieder; und **das Budget ist geteilt** — eine Vertiefung verbraucht ein Kontingent, das eine Reparatur später brauchen könnte, weshalb beides nicht ohne Buchung aus demselben Topf gehen darf. Dazu die Grundlage ihrer Abwägung: Der Block muss **Trefferqualität und Dateigröße** nennen, sonst entscheidet sie zwischen Nachlesen und Weiterreden im Blindflug. **Neu §3.0c:** *„Weißt du was über X"* ist ein Auftrag über **drei** Bestände mit drei Zugängen — eigenes Wissen, freigegebene Dateien, Web. Der Zettel des Dienstes enthält sich dazu, weil ein Urteil über andere Anbieter auf keinen Zettel gehört; der Empfang löst es durch Mehrfachzustellung. Dabei wird eine ältere Lücke sichtbar: **Das eigene Wissen und das Web sind über den Empfang nicht als Dienste wählbar** — das eine ist Kontextquelle, das andere ein Merker. - **v0.3 — 17.08.2026:** **Die epistemische Grenze wird gebaut, nicht gesagt** (§1a). Was in den Dateien steht, ist nicht ihr Gedächtnis und nicht sie; der Dienst muss ihr die Sprechhandlung *„ich habe hier Aufzeichnungen, die belegen…"* ermöglichen und *„ich weiß"* verwehren. **Der Präzedenzfall steht als offener Defekt im Bestand:** Nova hat die Biografie eines Menschen als eigene übernommen, und die dort vermerkte Abhilfe ist genau diese — die Grenze im Prompt benennen. Dateiinhalt ist derselbe Fall eine Stufe weiter, denn ein Dokument gehört niemandem und kann zusätzlich falsch oder veraltet sein. Daraus **ein eigener Block `[AUFZEICHNUNGEN]` statt einer Zeile im Gedächtnisblock**, mit Fundstelle je Eintrag, mit der Einordnung im Block statt im System-Prompt (ein Grundsatz, der in jedem Turn steht, wird in dem Turn übersehen, in dem er gebraucht wird), und mit dem ausdrücklich benannten Konfliktfall: Widerspricht eine Aufzeichnung ihrer Erinnerung, sagt sie beides. **Zweitens ein zweiter Zugang** (§3.0): Der Index wird in **jedem** Turn über `such_vektor` abgefragt und trägt als Kontextquelle zum Enricher bei — dieselbe erprobte Bauart wie die Bibliothek, ohne zweites Embedding je Turn. Dieser Weg ist vom NMCP-Regelwerk **ausgenommen**, weil die Konvention den Lesepfad herausnimmt; er wird nicht gewählt, er läuft. **Und die Schwelle darauf wird gemessen, nicht gesetzt** (§3.0a): Am selben Embedding liegt Beziehungsprosa einander fremder Menschen bei 0,774 — wer nach Gefühl auf 0,7 setzt, bekommt in jedem Turn Treffer. - **v0.2 — 17.08.2026:** **Die Wurzel ist eine Festlegung wie eine Direktive** — und damit ist §2.2 umgekehrt: Das Argument *„eine Datei hat keinen Beobachter"* hält, die Schlussfolgerung *„also kein Paar-Schema"* war zu kurz gezogen. **Das Paar sitzt an der Freigabe, nicht an der Datei**: Ein Mensch gibt einer Figur ein Verzeichnis frei, und die Indexzeile erbt ihre Zuordnung über die Wurzel. Das löst drei Fragen auf einmal — mehrere Verzeichnisse sind der Normalfall statt eines Sonderfalls, der Entzug ist symmetrisch zur Freigabe, und dieselbe Datei steht einmal im Index statt einmal je Mensch. Neu §2a mit der Wurzeltabelle, den fünf Aktionen nach dem Vorbild der Direktiven und dem Tor, das den **aufgelösten** Pfad samt Dateizahl zeigt, bevor es freigibt. **§2a.3 trennt zwei Formen des Entzugs**, die leicht zusammenfallen: stilllegen lässt die Indexzeilen stehen, vergessen löscht sie — und der Index trägt Thema und Zusammenfassung aus dem Inhalt, weshalb wer eine Freigabe zurücknimmt fast immer die zweite Form meint. Aus zwei Diensten werden **drei**, mit der Zusicherung darüber: drei Schreibziele, und keines ist eine Datei. **§7 Regel 3 ist neu gefasst** — dass eine Äußerung einen Pfad bestimmt, ist jetzt gewollt und braucht deshalb drei Riegel statt eines Verbots: einen konfigurierten Außenrand, ein Tor auf dem aufgelösten Pfad, und die Auflösung **vor** der Prüfung. Der Unterschied zur Direktive ist genau dieser Rand: Eine Direktive wirkt auf Novas Verhalten, eine Freigabe auf das Dateisystem des Menschen. - **v0.1 — 17.08.2026:** Erstfassung. **Zwei Korpora statt einem:** `autonomous_wissen` trägt Novas eigenes Wissen samt Verfall und Paar-Schema und ist für einen Verzeichnis-Index die falsche Tabelle. **Der Verzicht auf Verfall ist keine Ausnahme, sondern die Anwendung der bestehenden Regel** — ein Indexeintrag ist eine Tatsachenbehauptung über das Dateisystem und kein Gedächtnis; ein Gewicht darauf wäre irreführend statt überflüssig. **Kein Paar-Schema, dafür eine Wurzel** — eine Datei hat keinen Beobachter. **Zwei Dienste**, weil Wächter und Lesen verschiedene Zustellarten haben; dabei fiel ein Befund über die Anmeldung selbst an: Die Zustellart ist einwertig und kann einen Dienst nicht beschreiben, der auf Anfrage **und** periodisch arbeitet (§3). **Die Grenze zwischen lesender und schreibender Zone liegt im Code, nicht in der Anmeldung** — was ein Dienst verspricht und was er kann, sind zwei Prüfungen (§7). Der erste Dienst, dessen Anmeldung vor dem Code steht. ---