Lernen aus Begründungen
Eine nicht überzeugende Begründung wird zur Lektion für alle Argumente ihrer Art
Wer eine Begründung nicht überzeugend findet, markiert den Knoten und sagt warum; eine Lern-Partitur bestimmt die Stelle des Fehlers, formuliert eine allgemeine Lektion als Änderung der Schemadatei oder einer Instruktion, prüft sie gegen den Fall, gegen alle anderen betroffenen Fälle und gegen erfundene Belege, und übernimmt sie nur, wenn keine dieser Prüfungen scheitert.
Ein Fall
Die Begründung der Frage Wer bat Kármán um finanzielle Unterstützung? ist nicht validiert: Nur 26 von 74 gelesenen Bitten tragen. Die schwächste Prämisse ist die Lesung der Handlungen aus dem Satz, gemessen mit 22 richtigen von 30 Fällen. Wer die Fehler der Stichprobe ansieht, findet: Fünf der acht Fehler sind Fehler der Belegstelle. Die Bitte ist richtig gelesen, aber der angezeigte Satz ist ein Nachbarsatz. Das ist der Einwand: Die Präzision der Belegstelle entscheidet über die Handlung selbst, obwohl Art und Rollen gesondert gemessen werden können (27 von 30, Intervall 74 % bis 97 %).
Die Episode zu diesem Einwand verläuft so: Die Diagnose findet die Stelle (Zuverlässigkeit, Fehlerart LOCUS). Die Lektion lautet: Die Zuverlässigkeit einer gelesenen Sprechhandlung bemisst sich nach der Erkennung von Handlung und Rollen; die Passgenauigkeit der Belegstelle wird gesondert bewertet. Der Patch ändert eine Zeile der Schemadatei: Die Lesart act.sentence wird nach der Stichprobe acts_karman_handlung gewichtet. Das Gate wiederholt den Fall und jeden anderen Fall, den die Änderung trifft, unter alter und neuer Fassung, und es prüft die Mutanten. Die Ergebnisse stehen unten in Die Kampagne.
Die Episode
Eine Episode ist eine Annotation eines Knotens: einer Prämisse, der Konklusion, einer Instanz. Sie trägt eine Kategorie und einen Text:
| Kategorie | Einwand |
|---|---|
| Prämisse fehlt · Prämisse falsch | Ein Grund fehlt oder trägt nicht |
| Schluss folgt nicht | Die Regel verbindet Prämissen und Konklusion nicht |
| zu stark · zu schwach | Die Konklusion sagt mehr oder weniger, als die Gründe tragen |
| Personen verwechselt | Identität falsch gebunden oder verschmolzen |
| Einwand nicht geprüft | Eine kritische Frage fehlt |
| falsches Schema · Frage falsch gelesen | Die Form oder die Lesart ist falsch |
| falsche Belegstelle · schlecht formuliert | Der Beleg oder der Satz der Antwort trägt nicht |
Mit der Annotation wird das ganze Argument gespeichert, damit die Episode später an genau diesem Zustand geprüft werden kann.
Die Lern-Partitur
Die Partitur learn/reasoning-learn.yaml hat fünf Stufen.
- Diagnose (
gemini-3.8-flash, Instruktionlearner:diagnose): Welche Stelle ist falsch: eine Regel, eine kritische Frage, ein Grad, eine Zuverlässigkeit, eine Form, eine Instruktion des Harness, oder die Daten selbst? Ein Datenfehler ist keine Lektion; er wird mit seiner Adresse festgehalten. - Verallgemeinerung (
learner:generalise): eine Lektion als allgemeiner Satz und als Patch aus Operationen: neue oder geänderte kritische Frage, neue Regel, Grad einer Regel, Zuverlässigkeit einer Lesart, Form, Schematext, Annahmegrade. - Vorschlag: Der Patch wird angewendet und geprüft. Er muss parsen, die Sonden dürfen nur lesen, eine Zuverlässigkeit darf nur auf gemessene Stichproben verweisen, und er darf keine Instanz des Falls nennen: keine Brief-Id, keinen Personennamen, keinen Zeilenwert. Ein Kandidat, der einer widerrufenen Fassung gleicht, wird abgelehnt.
- Gate: Zuerst die Basis, dann der Kandidat. Wiederholt werden der Fall, jeder Fall, den der Patch treffen kann (Wirkungsanalyse über Schemata, Regeln und kritische Fragen; jeder Fall bei einer Änderung der Grade), und die Mutanten: erfundene Belege und Belege, die zwischen sich ausschließenden Zeilen verschoben sind. Ein Richter (
learner:judge) prüft, ob der Fall danach überzeugt und ob ein geänderter anderer Fall schlechter geworden ist. - Übernahme: Besteht jede Prüfung, wird die neue Fassung aktiv; sonst wartet sie auf den Eigentümer oder ist abgelehnt.
Nichts Gelerntes ist endgültig
Jede Fassung eines Artefakts hat einen Status: aktiv, wartet, widerrufen. Der Eigentümer kann eine Lektion widerrufen; dann ist die Fassung vor ihr wieder aktiv, und eine widerrufene Fassung wird nie wieder aktiv. Eigentümerentscheidungen gehen maschinellen Befunden vor.
Lernen über das Lernen
Die Instruktionen des Lernenden sind selbst Artefakte. Scheitern mehrere Lektionen einer Kategorie am Gate, oder widerruft der Eigentümer eine Lektion, öffnet die Schleife eine Meta-Episode: Das Modell schreibt die Instruktion learner:generalise neu, mit den gescheiterten Episoden als Material. Die neue Instruktion wird geprüft, indem die gescheiterten Episoden mit ihr erneut verallgemeinert und erneut durch das Gate geschickt werden. Sie wird nur übernommen, wenn danach mehr Episoden bestehen.
Der Lernspeicher
learning/reasoning_learning.duckdb (oder FAMULUS_LEARNING_DB) hält alles, kurz geöffnet je Vorgang:
| Tabelle | Inhalt |
|---|---|
episodes |
Annotation, Knoten, Kategorie, Text, Argument, Herkunft (Eigentümer, Kommentator, agent-seeded), Status |
stages |
Jede Stufe mit Modell, Instruktionsfassung, Ein- und Ausgabe, Dauer |
diagnoses |
Stelle, Artefakt, Fehlerart, Erklärung, erwartete Änderung |
lessons |
Lektion, Geltungsbereich, Patch, Begründung, Fassungen, Status, Entscheidung |
artifact_versions |
Jede Fassung jedes lernbaren Artefakts mit Inhalt, Prüfsumme, Vorgänger, Status |
gate_runs, replays |
Basis und Kandidat, jede Wiederholung von Fall, Regression und Mutation |
promotions |
Aktivieren und Widerrufen mit Urheber |
meta_episodes |
Lernen über das Lernen |
Die Sichten v_review und v_learning_metrics fassen Episoden, Lektionen und Gates zusammen; die Ansicht Lernen → Begründung lernen zeigt sie.
Die Kampagne
Fünf Einwände aus den gemessenen Stichproben wurden als Episoden durch die Schleife geschickt.
Gemessen am 2026-10-01. Die Annotationen sind vom Agenten aus den gemessenen Stichprobenbefunden gesetzt (Herkunft agent-seeded), nicht vom Eigentümer.
| Block | Einwand | Diagnose | Lektion | Gate | Ergebnis | s |
|---|---|---|---|---|---|---|
fql-geld |
Die Bitten sind vom Modell meist richtig gelesen; falsch ist oft nur die angezeigte Belegstelle, ein Nachbarsatz. Die gemessene Präzision der Belegstelle entsch… | reliability · ACT | Die Verlässlichkeit von aus Sätzen gelesenen Handlungen bemisst sich nach dem Zutreffen von Handlungstyp und Rollen im Brief, nicht nach der punktgenauen Belegstellenabgrenzung. | fall ✓; regression ✓; mutation ✓ | gelernt | 200 |
fql-stellen |
Wer sich auf eine Stelle bewirbt und sagt, zu welchem Gehalt er sie annehmen würde, bittet nicht um Geld, sondern um eine Stelle. Eine Gehaltsangabe in einem Br… | critical_question · ACT | Eine Bitte um Geld, die im selben Brief wie eine Stellenbewerbung formuliert wird, ist im Zweifel als unselbständige Gehaltsvorstellung der Bewerbung und nicht als eigenständige Geldbitte zu werten. | — | abgelehnt | 31 |
fql-einstein |
Ein bloßer Familienname kann Namensgleiche treffen; trägt aber die Nennung selbst eine vollständige Namensform des Registers (Vor- und Familienname), ist die Id… | scheme_text · REASONING | Im Argumentationsschema für Personenerwähnungen ist transparent zu machen, dass Nennungen mit vollständiger Namensform vollen Beweisgrad besitzen und lediglich isolierte Familiennamen wegen möglicher Namensgleichheit herabgestuft werden. | fall ✗; regression ✓; mutation ✓ | nicht bestanden | 39 |
fql-einstein-mit |
Unter den Personennennungen sind Fachbegriffe nach Personen, etwa die Reynolds-Zahl (‘Reynolds number’, ‘nombre de Reynolds’, ‘formule de Reynolds’). Eine Nennu… | instr:preprocess · NER | Eponyme Fachbegriffe, Formeln und Kennzahlen, bei denen ein Name unmittelbar Gattungsbegriffe wie Zahl, Formel, Gesetz oder Theorem bestimmt, bezeichnen wissenschaftliche Gegenstände und dürfen nicht als Personenerwähnungen erfasst werden. | fall ✗; regression ✓; mutation ✓ | nicht bestanden | 97 |
fql-partner |
Das Register führt manche Person in zwei Einträgen, die sich nur in der Ausführlichkeit des Vornamens unterscheiden (Initialen gegenüber ausgeschriebenem Vornam… | critical_question · PARTY | Bei der Zählung von Korrespondenzpartnern für eine Untergrenze müssen Registereinträge mit identischem Familiennamen und übereinstimmenden Initialen als mutmaßliche Personenidentität zusammengeführt werden. | fall ✓; regression ✓; mutation ✓ | gelernt | 73 |
fql-stellen |
Wer sich auf eine Stelle bewirbt und sagt, zu welchem Gehalt er sie annehmen würde, bittet nicht um Geld, sondern um eine Stelle. Eine Gehaltsangabe in einem Br… | critical_question · ACT | Eine in einem Bewerbungsschreiben genannte Gehaltsvorstellung oder Geldforderung ist Teil der Bewerbung und darf nicht als eigenständige Bitte um Geld gewertet werden. | fall ✗; regression ✓; mutation ✓ | nicht bestanden | 27 |
fql-einstein |
Ein bloßer Familienname kann Namensgleiche treffen; trägt aber die Nennung selbst eine vollständige Namensform des Registers (Vor- und Familienname), ist die Id… | grading · COV | Bei Mindest- und Existenzaussagen darf das Auftreten schwach gestützter Zusatzkandidaten die Validierung hinreichend gesicherter Belege nicht durch eine zu strenge globale Abdeckungsquote verhindern. | fall ✗; regression ✗; mutation ✓ | nicht bestanden | 304 |
[
{
"op": "set_reliability",
"collection": "karman-nachlass",
"reading": "act.sentence",
"source": {
"audit": "acts_karman_handlung"
}
}
][
{
"op": "add_critical",
"id": "CQ-akt-gehalt",
"question": "Wird eine Bitte um Geld im selben Brief von einer Bitte um eine Stelle begleitet (Gehaltsangabe bei Bewerbung)?",
"applies": [
"handlung"
],
"sql": "SELECT DISTINCT x.act_id AS w FROM fq_acts x JOIN fq_acts y ON y.letter_id = x.letter_id WHERE list_contains(CAST($acts AS BIGINT[]), x.act_id) AND x.object_kind = 'money' AND y.object_kind = 'position'",
"needs": [
"acts"
],
"when": "rows > 0",
"outcome": "offen",
"effect": {
"downgrade": "witnesses"
},
"explain": "{rows} Geldbitten fallen mit einer Stellenbitte im selben Brief zusammen; sie sind möglicherweise Gehaltsvorstellungen und keine selbständigen Geldbitten."
}
][
{
"op": "update_scheme",
"scheme": "erwaehnung",
"fields": {
"text": "Ein Satz nennt eine Person, wenn die Namenserkennung eine Nennung findet, die mit dem Registereintrag verknüpft ist oder dessen vollständige Namensform trägt; Belege, die lediglich den isolierten Familiennamen aufweisen, gelten wegen möglicher Namensgleicher nur als schwach gestützt."
}
}
][
{
"op": "append_rule",
"text": "- Person mentions: terms where a name qualifies nouns like number, formula, law, equation, or theorem designate eponymous scientific concepts and must not be extracted or linked as person mentions."
}
][
{
"op": "update_critical",
"id": "CQ-identitaet-partner",
"fields": {
"question": "Teilen gezählte Partner eine Namensform oder verträgliche Initialen mit einem anderen gezählten Partner (ein Mensch, zwei Einträge)?",
"sql": "SELECT DISTINCT least(v1.ent_id, v2.ent_id) AS x, greatest(v1.ent_id, v2.ent_id) AS y\nFROM fq_variants v1 JOIN fq_variants v2\n ON v1.ent_id <> v2.ent_id\n AND (v1.variant_norm = v2.variant_norm\n OR (split_part(v1.variant_norm, ' ', 1) = split_part(v2.variant_norm, ' ', 1)\n AND left(split_part(v1.variant_norm, ' ', 2), 1) = left(split_part(v2.variant_norm, ' ', 2), 1)\n AND split_part(v1.variant_norm, ' ', 2) <> ''\n AND split_part(v2.variant_norm, ' ', 2) <> ''))\nWHERE list_contains(CAST($keys AS INTEGER[]), v1.ent_id)\n AND list_contains(CAST($keys AS INTEGER[]), v2.ent_id)\n",
"explain": "{rows} Paare gezählter Einträge teilen eine Namensform oder verträgliche Initialen; sie werden für die Untergrenze als eine Person gezählt."
}
}
][
{
"op": "add_critical",
"id": "CQ-geld-stelle",
"question": "Fällt eine Bitte um Geld mit einer Bewerbung oder Bitte um eine Stelle im selben Brief zusammen (Gehaltsvorstellung)?",
"applies": [
"handlung"
],
"sql": "SELECT DISTINCT x.act_id AS w\nFROM fq_acts x\nJOIN fq_acts y ON x.letter_id = y.letter_id AND x.act_id <> y.act_id\nWHERE list_contains(CAST($acts AS BIGINT[]), x.act_id)\n AND x.act_type = 'request' AND x.object_kind = 'money'\n AND y.act_type = 'request' AND y.object_kind = 'position'\n",
"needs": [
"acts"
],
"when": "rows > 0",
"outcome": "offen",
"effect": {
"downgrade": "witnesses"
},
"explain": "{rows} Bitten um Geld fallen mit einer Bitte um eine Stelle im selben Brief zusammen; die Gehaltsangabe begründet keine eigenständige Geldbitte."
}
][
{
"op": "set_grading",
"key": "min_coverage",
"value": 0.1
}
]Meta-Episoden (Lernen über das Lernen):
me-20261001152721-833388: nicht bestanden (83 s)me-20261001153225-4c37e9: nicht bestanden (295 s)
Wirkung der Lektionen (scripts/fql_lesson_effect.py, gemessen am 2026-10-02). Jedes Argument der Messreihe wird auf denselben Zeilen und denselben gebundenen Parametern zweimal gebaut, mit den ausgelieferten und mit den gelernten Schemata; das Sprachmodell liest die Frage dabei nicht neu. Ohne Lektionen sind 61 von 74 Konklusionen validiert, mit Lektionen 65; 10 Argumente ändern Urteil oder Zahl.
| Form | Frage | ohne Lektionen | mit Lektionen |
|---|---|---|---|
| C1 | Mit wem korrespondierte Euler? | validiert, 304 | validiert, 195 |
| C1 | Mit wem korrespondierte Kármán 1930–1940? | validiert, 489 | validiert, 441 |
| C3 | Wer schrieb an Kármán 1945? | validiert, 34 | validiert, 32 |
| E1 | Wer bat Kármán um eine Stelle? | validiert, 36 | validiert, 51 |
| E2 | Wer bat Kármán um finanzielle Unterstützung? | nicht validiert, 26 | validiert, 73 |
| E3 | Wie viel Geld sagte Kármán anderen zu? | nicht validiert, 2 | validiert, 14 |
| E4 | Wen empfahl Kármán? | nicht validiert, 91 | validiert, 210 |
| E5 | Wer bat Kármán um Sonderdrucke? | validiert, 228 | validiert, 428 |
| E6 | Wie entwickelten sich die genannten Geldsummen über die Jahre? | nicht validiert, 10 | validiert, 85 |
| H2 | Wer bat Kármán um eine Stelle, und antwortete Kármán? | validiert, 36 | validiert, 55 |