Konfidenz-Bewertung: Studienlage, Lösungskonflikt und Bedingungen für eine Wiederaufnahme #85
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Status: zurückgestellt, nicht verworfen. Der Konfidenz-Mechanismus wird mit #60 ersatzlos entfernt. Dieses Issue hält fest, warum, was dabei geprüft und verworfen wurde, und unter welchen Bedingungen das Thema wieder aufzumachen ist. Es ist eine Entscheidung auf Abruf, kein Arbeitspaket: es wird nicht implementiert, sondern gelesen, wenn einer der Trigger unten eintritt.
Der Grund für dieses Issue: die Analyse hat sechs Gesprächsrunden und drei Agentenläufe gekostet und mehrere Entwürfe erzeugt, die jeweils an einem konkreten Messwert gescheitert sind. Diese Messwerte sind mit der Entfernung des Mechanismus nicht mehr aus dem Korpus reproduzierbar — die Felder sind dann weg. Ohne diese Notiz müsste eine spätere Session bei null anfangen und würde mit hoher Wahrscheinlichkeit dieselben drei Entwürfe erneut bauen.
Inhalt
Was entschieden wurde
Am 2026-09-10, aus der Ausarbeitung von #60:
confidence,confidence_base, der Zeit-Decay und die Konfidenz-Rubrik werden ersatzlos entfernt (Variante A der drei unten). Bewusst hingenommener Verlust dabei: der Lint-Befundconfidence_exceeds_source_standing, der einzige automatische Abgleich zwischen dem, was eine Seite beansprucht, und dem, was ihre Quellen tragen.fidelityundauthorityauf den Source-Seiten bleiben. Sie sind aufgezeichnete Tatsachen über die Quelle und hängen nicht am gelöschten Wert — jede Wiederaufnahme kann auf ihnen aufsetzen.Die Messlage
Erhoben am 2026-09-09/10 gegen 182 kb-Seiten, davon 152 mit
confidence_base. Nach der Migration sind diese Zahlen nicht mehr reproduzierbar.Verteilung der Basiswerte: 0.95×23, 0.90×24, 0.88×2, 0.85×14, 0.80×30, 0.75×1, 0.70×14, 0.60×1, 0.50×43. Neun benutzte Stufen auf einer Skala mit hundert, gelesen gegen genau zwei Konstanten (0.6 und 0.4).
Der Vorgabewert dominiert. Die 43 Seiten auf exakt 0.50 tragen den Schema-
default:, dennew_page.pybeim Anlegen durchreicht — kein Urteil. Die Arbeitsliste--field 'confidence<0.6'findet damit überwiegend „nie bewertet", nicht „unsicher", und die beiden Zustände sind im Feld nicht unterscheidbar. Unter 0.4 liegt keine einzige Seite; die härtere Hedging-Schwelle aus der Rubrik war nie erreichbar.Der Wert wird angelegt und nie wieder angefasst. In der gesamten Historie seit dem Squash vom 2026-09-01 (82 Commits, 31 an
kb/-Seiten) wurdeconfidence_baseauf zwei Seiten nachträglich geändert, beide als Nebeneffekt einer inhaltlichen Überarbeitung. Einschränkung: die Historie ist nur neun Tage tief.Der Decay hat nie gewirkt. Alle 152 Seiten trugen ein
modified:von höchstens 12 Tagen (Korpusreduktion 2026-09-01), Faktor ~0.996. Genau eine Seite hatteconfidence ≠ confidence_base— „Issue Label Scheme", 0.70 gegen 0.85. Das war kein Decay-Ergebnis, sondern ein stiller Fehler:confidence_decay.pyüberspringtconcept_type: decision, undtouch --confidence-basezieht das abgeleitete Feld nicht mit. Nichts prüfte diese Divergenz. Rechnerisch brauchte eine unberührte Seite im Median 25 Monate bis unter 0.6 und 50 bis unter 0.4 — bei einemmodified:, das jede Bearbeitung zurücksetzte, also nie.Kohortenbefund — der wichtigste Einzelbefund. Die Ausreißer sind fast vollständig Altlast, nicht Rubrikversagen:
created)init-base-Backfill)Die 21 Seiten der neueren Kohorte haben 1–4 Quellen, sind also vergleichbar, und liegen systematisch tiefer.
Die Werte korrelieren nicht mit Quellenmetadaten. Alle 21 Seiten der neueren Kohorte liegen in derselben Zelle der Autoritätstabelle (
authority: reporting×fidelity: verbatim), weil 16 der 29 Quellen wortgetreue Design-Transkripte sind. Die Streuung 0.5 / 0.7 / 0.85 passiert vollständig innerhalb einer Zelle. Bei einer Quelle: 0.5 achtmal, 0.7 viermal — gleiche Zelle, anderes Urteil.Was der Wert stattdessen zu kodieren scheint: Reifegrad des Gegenstands. Gerade entschieden, noch nicht ausgeübt → 0.5 („Personalization Plane", „ENVIRONMENT.md", „Structural Enforcement over Documented Rule"). Implementiert und ausgeliefert → 0.7 („Publish-Remote Gate", „KB Stack Versioning"). Kodifiziert und mehrfach belegt → 0.85 („Issue Label Scheme"). Das ist eine Rekonstruktion aus 21 Seiten, keine Aussage des Operators — sie war nie bestätigt und ist der erste Punkt, den eine Wiederaufnahme klären müsste.
Informationsgehalt des Feldes: 14 von 152 Seiten. Nur dort sagte der handgesetzte Wert etwas, das keine Ableitung aus vorhandenen Daten rekonstruiert hätte: 9 Seiten
provenance: sourcedmit einer Quelle, die trotzdem auf 0.5 standen (belegt, aber als dünn beurteilt), und 5 Seitenprovenance: generalganz ohne Quelle auf 0.7–0.95 (unbelegt, aber als sicher beurteilt).Der Wert korrelierte mit Vorhandenem — Confounder: die hohen Werte sind überwiegend die PoC-Kohorte, die schlicht mehr Bearbeitung gesehen hat.
Kein Konsument hing vom Wert ab. Nur Leser: Trefferanzeige,
--sort -confidence, ein generisches Frontmatter-Prädikat, ein beratender Lint-Check. Das Ranking benutzte ihn nicht (Score = Treffergewicht plus Titel-/Summary-Boost),index rebuildschrieb ihn nicht in den Katalog,doctor,evalundprovenancekannten ihn nicht, kein Gate und kein Test hing daran. Der einzige strukturelle Bezug warcorpus_diff.STRUCTURAL_FIELDS— eine Abhängigkeit auf die Existenz des Feldes, nicht auf seinen Wert.Herkunft. Der Mechanismus ist importiert, nicht aus einem Bedarf dieser Instanz abgeleitet:
raw/articles/llm-wiki-v2.mdbeschreibt ihn als Idee — Score aus Quellenzahl, Aktualität und Widerspruch, „decays with time and strengthens with reinforcement". Gebaut wurde die Hälfte: der Zerfall, nie die Verstärkung.Der Lösungskonflikt: vier geprüfte und verworfene Entwürfe
Jeder scheiterte an einem konkreten Befund, nicht an Geschmack. Wer das Thema wieder aufmacht, sollte hier anfangen.
1. Rubrik nachjustieren (Defaults senken, Decay erhöhen). Der naheliegende Reflex aus dem ursprünglichen Stub. Verworfen am Kohortenbefund: die aktuelle Autorenpraxis respektiert Rubrik und Obergrenze bereits; die Ausreißer sind Altbestand. An der Rubrik zu drehen hätte nichts an der Ursache geändert — sie wird ohnehin nicht angewendet, in keine Richtung.
2. Autorität der Design-Transkripte anheben (
reporting→normative, weil eine Sitzung, in der etwas entschieden wird, für diesen Gegenstand konstitutiv ist, nicht berichtend). Kontrafaktisch durchgerechnet: alle 18transcript/tracker-Quellen aufnormativelöst 7 von 67 Befunden. Der Rest kommt aus PoC-Quellen anderer Art (Cheat-Sheets, Artikel,opinion-Analysen). Als Haupterklärung untauglich.3.
standing— den Wert ausauthority×fidelityder Quellen berechnen statt ihn zu schätzen, mit handgesetztem Override für unabhängige Verifikation. Getestet gegen die gut kalibrierte Kohorte, die die Formel reproduzieren müsste: Ø Delta −0,21, null von 21 Seiten innerhalb ±0,05. Die Formel zog jede neue Seite nach oben (0.5 → 0.8). Grund: sie misst die Form des Mitschnitts, nicht den Gegenstand. Ein perfektes Transkript einer Sitzung, in der etwas gerade erst erfunden wurde, istreporting × verbatim— und die Sache selbst ist trotzdem ungesichert.4. Zwei Schubladen —
maturity(Reifegrad, Ankerwerte 0.5/0.7/0.85) undvolatility(Halbwertszeit des Gegenstands:volatile6 /evolving24 /stable60 Monate /fixedkein Decay), beide vom LLM beim Ingest vorgeschlagen und vom Operator korrigierbar, Zuordnungen als maschinenlesbarer Block im Frontmatter vonkb/CONVENTIONS.md. Der weitest ausgearbeitete Entwurf; er beantwortete den berechtigten Einwand, dass Veralterung eine Eigenschaft des Gegenstands ist (Python-Best-Practices altern, E3DC-Designprinzipien nicht, Blogs schnell, OOP und Scrum kaum) und keine globale Konstante. Zwei Gründe für das Aus:*.schema.yamlplus der Konfigblock) — genau die zweite Kopie, die Invariante 8 verbietet.maturitywar zirkulär: wennprovisionalden Ankerwert 0.5 bedeutet und der Autor 0.5 schreibt, steht derselbe Sachverhalt zweimal da, und der Prüf-Check verglich eine Zahl mit einem Etikett, das aus der Zahl folgt. Die diskrete Rubrikconfidence_base ∈ {0.5, 0.7, 0.85}hätte dasselbe ohne Feld geleistet — womit der ganze Aufbau auf ein Feld zusammenfiel und die Frage, ob das eine Feld noch trägt, wieder offen war.Der Volatilitäts-Teil dieses Entwurfs ist der einzige, der eine Wiederaufnahme wert bleibt — siehe Trigger 3.
Commonplace: der dokumentierte Präzedenzfall
Die eingebundene Wissensbasis unter
commonplace/kb/(Projekt zby/commonplace, schreibgeschützt, vondist exportausgeschlossen) hat dasselbe Problem gelöst und das Feld gelöscht.reference/adr/044-user-verification-replaces-global-note-status.md(2026-07-11) entfernt dasstatus-Feld ersatzlos. Begründung: es fusionierte Reife (seedling), Akzeptanz (current), Behauptungsstärke (speculative) und Aktualität (outdated) in eine Achse, die „weder eine Achse noch in irgendeiner Kombination maschinell prüfbar" war. Die dort verworfenen Alternativen decken sich mit unseren Entwürfen:maturity)maturity+volatility)standing)An seine Stelle traten dort drei getrennte Dinge:
user-verified: trueals menschliche Bezeugung (nur dieser eine Wert; Abwesenheit sagt ausdrücklich nichts über Wahrheit, Reife oder Review-Historie), kriteriumsspezifische Freshness-Baselines im Store, und Prosa-Kriterien als eigene Review-Gates.Die Mark-Doktrin —
notes/a-derived-copy-of-recomputable-truth-must-be-checked-or-absent.md: eine fehlende abgeleitete Kopie kostet den Konsumenten eine begrenzte Neuberechnung, eine falsche kostet stille, unbegrenzte Fehlerhaftigkeit, weil sie genau den Fallback unterdrückt, der die Wahrheit gerettet hätte. Handgepflegt-und-geglaubt ist die „forbidden middle".notes/notes-need-quality-scores-to-scale-curation.mdsagt dazu direkt: „No global scalar supplies quality."Der prinzipielle Einwand gegen jeden Seitenskalar —
notes/mixed-epistemic-status-must-be-preserved-below-the-document-level.md: ein Dokument enthält Beobachtung, Ableitung und bloß kompatible Erklärung nebeneinander; ein Urteil auf Dokumentebene kollabiert sie. Gilt unabhängig davon, wer den Skalar setzt.Warum LLM-gesetzte Konfidenz grundsätzlich schwach ist —
notes/llm-generation-confidence-tracks-typicality-not-soundness.md: Konfidenz misst Typikalität, nicht Belegtheit.Was dort die Funktion übernimmt und hier übertragbar wäre:
instructions/review-gates/prose/confidence-miscalibration.mdundfrontmatter/claim-strength.md): prüfen, ob ein Text stärker auftritt, als das trägt, was er zitiert — gegen die zitierten Quellen, nicht gegen eine Zahl. Beantwortet zusätzlich, welche Stelle zu stark hedgt. Kosten: zwei Markdown-Dateien, kein Code, kein Store; aber ein LLM-Urteil pro geprüfter Seite, also nur stichprobenweise im Semantic-Review-Abschnitt vonwiki-lintfinanzierbar. Das ist der naheliegendste Ersatz für den verlorenenconfidence_exceeds_source_standing-Check.reference/freshness-architecture.md,reference/adr/043-*.md): hier feuert das Input-Change-Signal von der Quellenseite nie, weilraw/per Contract unveränderlich ist. Die Kriteriumsseite ändert sich aber sehr wohl —types/*.mdundkb/CONVENTIONS.md. Ein Feld mit dem Hash des Type-Specs, gegen den die Seite zuletzt geprüft wurde, wäre mechanisch reproduzierbar und erfüllt die Mark-Doktrin, anders alsconfidence_base.notes/quality-signals-for-kb-evaluation.md): Orphan-Rate, Index-Deckung, Beschreibungs-Uniqueness, gewichtete Inbound-Links. Wichtig von dort: eine Explorationsquote reservieren, sonst verhungern genau die Orphans, die die Liste finden soll.notes/link-graph-plus-timestamps-enables-make-like-staleness-detection.md): eine Seite, derenrelated:-Ziel nach ihrer letzten Bestätigung umgeschrieben wurde, ist Review-Kandidat. Umsonst aus vorhandenen Daten, präziser als jede Uhr für die selbstdokumentierende Hälfte des Korpus.Nicht übertragbar: der SQLite-Store mit Snapshots und Baselines, 26 Kommandos, ~13.000 Zeilen Python — bei 60
wikitool-Aufrufen pro Sitzung nicht finanzierbar. Ebenso Modellpartitionen (setzen einen persistierten Evidenzraum voraus).user-verified: truewäre übertragbar, löst das Problem aber nicht: laut ADR 044 sagt seine Abwesenheit ausdrücklich nichts, es ist eine Bezeugung, kein Qualitätsmaß.Die drei Endansätze
verified: true; ein Prosa-Kriterium prüft Auftritt gegen Quellenstandverified:droht dasselbe ungepflegte Feld zu werdenWiederaufnahme-Trigger
Das Issue steht auf
prio/waiting; dies sind die Auslöser. Tritt einer ein, ist es zu lesen und die Entscheidung neu zu treffen — nicht der alte Entwurf zu bauen.--field '!sources',--field provenance=generalund--sort modifiedfinden die schwachen Seiten heute schärfer als esconfidence<0.6je tat. Wenn der Korpus so wächst, dass diese Prädikate zu grob werden — Richtwert: dauerhaft mehr als ~50 Seiten ohnesources:—, braucht die Kuratierung wieder ein Signal.types/*.mdoderkb/CONVENTIONS.mdals Kriterium versioniert werden, gegen das eine Seite zuletzt geprüft wurde, trägt das Commonplace-Freshness-Modell plötzlich — und zwar ohne Store, als Hash im Frontmatter. Das ist der einzige Weg, auf dem Veralterung hier ein Zustand statt einer Meinung würde.raw/verliert seine Unveränderlichkeit. Unwahrscheinlich und vertraglich ausgeschlossen, aber es ist die Bedingung, unter der das Input-Snapshot-Modell vollständig übertragbar würde.Woran eine Wiederaufnahme anzusetzen hätte
Zuerst die offene Frage klären, die nie beantwortet wurde: Was hat der Operator gemeint, wenn er 0.5 hinschrieb? Die Reifegrad-Lesart ist eine Rekonstruktion aus 21 Seiten. Ohne diese Antwort baut jeder Entwurf auf einer Vermutung — genau der Fehler, der die Entwürfe 3 und 4 gekostet hat.
Dann die Reihenfolge einhalten, die hier gelernt wurde: erst messen, ob das Problem im aktuellen Verhalten überhaupt auftritt, dann den Mechanismus entwerfen. Entwurf 1 und 2 wären nie gebaut worden, wenn die Kohortenanalyse vorher vorgelegen hätte, und Entwurf 3 fiel in dem Moment, in dem er gegen echte Daten getestet wurde statt gegen Plausibilität.
Und die Mark-Doktrin als Filter anlegen: Jeder Kandidat, der einen handgepflegten Wert einführt, den kein Konsument gegen etwas prüfen kann, ist derselbe Mechanismus in neuer Schreibweise.
Kontext: entstanden aus der Ausarbeitung von #60. Umsetzung dort, Korpusmigration im zugehörigen Migrations-Issue.
torben referenced this issue2026-09-10 15:11:52 +00:00