Files
creator3/LEKTIONEN.md
2026-07-23 16:07:36 +02:00

88 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Lektionen-Herkunft creator3
Basis: `../creator2/LEKTIONEN.md` (83 bezahlte Lektionen aus creator/creator2).
Übernommen als Anforderungen: 1-6, 10, 12-37, 40, 42-49, 52-83 + die vier
Meta-Regeln. Entfallen (CLI-/PDF-/uni-spezifisch): 7-9, 11, 38-39, 41, 51.
Lektion 50 (API statt CLI) ist die Gründungsentscheidung von creator3.
## Neue Lektionen aus der creator2-Analyse (2026-07-22)
84. **Budget default AN** — creator2s „hartes" Budget war per Default 0=aus und
in allen Echtläufen abgeschaltet. creator3: `RUN_BUDGET_TOKENS=10M` Default
(config.py), Prüfung VOR und NACH jedem Call (llm.py).
85. **Gates überall hart, nicht nur beim Korpus** — creator2 gatete nur E0;
E1-E4 stiegen bei Stillstand trotzdem auf. creator3: jede Stufe hat ein
Gate-Knoten, rot ohne Fortschritt (Fingerprint 2× identisch) → PAUSE
(engine.py `_gate_abschluss`).
86. **Dopplung inhaltlich prüfen, nicht nur Marker** — creator2 garantierte nur
Marker-Einmaligkeit. creator3: Satzpaar-Jaccard über Section-Grenzen +
Panel „redundant vs. didaktisch gewollt" (redundanz.py), Fix ersetzt durch
Ein-Satz-Refresher + Anker-Link.
87. **Akronym↔Langform explizit als Dedup-Kanal** — Lektion 28 war in creator2
nie umgesetzt; Cosinus/Jaccard sehen „HTTP"↔„Hypertext Transfer Protocol"
nicht (dedup.py `_kanal`, textkit.py `ist_akronym_von`).
88. **Nach der Soll-Zuordnung einmal nachdeduplizieren** — der
Gleicher-Soll-Punkt-Kanal kann erst feuern, wenn soll_ids gesetzt sind;
Dedup vor Zuordnung allein übersieht Synonym-Paare (inventar.gate).
89. **Engine denkt in Topics, nicht in Runs** — Tasks/Gates sind topic-scoped;
ein neuer Run auf fertigem Topic ist ein No-Op (Resume-Test: 0 Events).
## Lektionen aus Echtlauf 1 (Pomodoro, 2026-07-22: 353 Soll-Punkte, 2789 Atome,
## 5,4M Tokens für ein Mini-Thema)
90. **Soll-Band ist Pflicht, nicht Deko** — ohne Ziel ≈ √Kandidaten bestätigt
der Konsens jeden Mikro-Punkt mit 2 Blog-Belegen; alles danach skaliert mit
(korpus.soll_konsens: Band + 2. Faltungs-Pass).
91. **Websuche braucht Deckel UND Relevanz-Urteil** — 36 Queries × 8 Treffer
luden 195 Quellen inkl. App-Werbelisten (128 Atome!). Jetzt: QUELLEN_MAX=24,
Wikipedia zuerst, Kurz-Judge filtert Listen/Shops (suche._relevanz_filter).
92. **Extraktion belegnah, nicht flächendeckend** — ganze Quellen × 2 Reader
ergab 1135 Atome ohne Soll-Bezug. Jetzt: nur ±4k-Fenster um Soll-Belege;
Quellen ohne Beleg liefern keine Atome (korpus.gate).
93. **Vollständigkeit braucht einen Gegenspieler: Verdichtung** — Ziel ist das
minimale Abdeckungs-Set („Entfernen eines Atoms erzeugt eine Lücke").
Sammeln allein produziert Splitter (582 Atome, 51k-Wörter-Guide). Jetzt:
Verdichtungs-Knoten je Soll-Punkt (Panel-Schnitt, Fusion vererbt Anker —
Abdeckung bleibt), Granularitäts-Regel im Extraktor, Beleg-Abdeckung als
Kennzahl. Writer-Input als Prosa statt Feldern (TITEL:-Leak, 41 Sections).
94. **Befunde brauchen Identität über Runden** — llm_pruefung fügte denselben
Befund jede Runde als neue Zeile ein; die Eskalations-Kette (geklaert-Flag)
startete endlos von vorn. Jetzt: Dedupe über (art, item, detail-Kern),
finale Zustände (freispruch/eskaliert) blocken Wiedereintrag UND Live-Checks
(guide.befund_merken). Und: Beifang-Atome ohne Soll-Bezug werden nach der
Zuordnung verworfen — sonst 90 Ballast-Atome → 8 Sammelziele → 32 Bausteine.
95. **Verweis heißt Prosa, nicht Link** — „Verweis statt Wiederholung" mit
Anker-Links erzeugte Sprung-Zwang und Link-Flut (Gutachten: Leser will
linear lesen). Jetzt: Rückbezug = Halbsatz ohne Link; det-Checks
link_im_text/atom_echo/h_ebene erzwingen es; Fettzeilen-Echo (Atom-Input
wörtlich + Paraphrase) war die Haupt-Dopplungsquelle.
96. **Abdeckung heißt Beleg-Stellen, nicht Punkte** — ein Atom je Soll-Punkt
genügte formal, ließ aber Facetten aus (Namensherkunft fehlte trotz 7
Belegen). Jetzt: Facetten-Gate — jede Beleg-Stelle braucht ein Atom im
±4k-Umkreis, sonst gezielte Fenster-Nachextraktion (Cap 2, dann
eskaliert). Wikipedia läuft über die Action-API statt robots-blockierter
HTML-Seiten.
97. **Redundanz braucht Phrasen- und Zahlen-Kanäle** — Satz-Jaccard 0,6 übersah
identische Phrasen in längeren Sätzen („Ich melde mich in 20 Minuten" 3×)
und dieselbe Studie in Paraphrase (a20≈a78). Jetzt: 5-Wort-Shingle-Kanal
(redundanz.py), Zahlen+Eigennamen-Signatur als Dedup-Kanal (dedup.py),
Urteil „enthalten" merged Teilmengen-Atome, Ziel-Dedup fängt synonyme
Lernziele („einordnen"/„verorten" → Doppel-Bausteine → Writer-Echos).
98. **Kuratierte Quelle = 1 Beleg genügt** — das ≥2-Belege-Band schützte vor
Blog-Halluzination, warf aber Einzelquellen-Facetten weg (Overflow-
Pomodoros nur in Wikipedia). Jetzt: Wikipedia-Beleg bestätigt allein
(SOLL_MIN_BELEGE_WIKI); Wikipedia wird geseedet statt ersucht und läuft
MIT durch den Relevanz-Judge („Pasta"/„Xinjiang" wurden geladen).
99. **Takt statt Breite** — die Parallel-Drossel (12 gleichzeitig) begrenzte
das Falsche: Rate-Limits zählen Starts pro Minute, nicht offene
Verbindungen (0×429 in 5k Calls). Jetzt: 1 Call-Start je TAKT_SEKUNDEN
(llm._slot), Knoten-Klassen bündeln kurze Aufgaben (lang=1, mittel=3,
kurz=10 Tasks je Call, engine._buendel_claimen + Ergebnis.teil_status).
100. **Bündel-Item-Retry statt Verwerfen** — fehlt ein Item in einer
Bündel-Antwort, geht NUR sein Task auf „neu" (versuch+1, dann sichtbar
„fehler"); Skills erzwingen je Item einen Block (OK/LEER/NICHTS als
explizites Nichts). Dedup: fehlende Paar-Urteile → EIN Nach-Call, danach
parse-Befund statt stiller „verwandt"-Kante. Stille None-Pfade
(kapitel_intro, lernziele, bausteine, anker_fix, luecke) sind jetzt
Raise → Task-Retry. Stille Fehler sind NIE erlaubt.