Konfidenz-Mechanismus ersatzlos entfernen #60
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?
Erledigt.
confidence,confidence_base, der Zeit-Decay und die Konfidenz-Rubrik sind ersatzlos aus dem Stack entfernt. Publiziert als54d9540aufmain, nachgezogen in11cbb15; CI-Lauf 219 grün über alle neun Schritte, einschließlichdist export→ frische Instanz →setup-instance.md-Replay.Die Studienlage zum Warum steht in #85 (zurückgestellt, nicht verworfen). Die Korpusmigration war #86 und lief im selben Publish.
Was entfernt wurde
confidence,confidence_baseaustypes/entity.schema.yaml,types/concept.schema.yaml; Feldzeilen intypes/entity.md,types/concept.md; Beispielzeilen intypes/instruction.md,types/type-spec.mdtools/chemenu/commands/confidence_decay.pygelöscht (decay,init-base) samt Registrierung incli.py;touch --confidence-baseund derconfidence-Eintrag intouch.UNSETTABLEconfidence_exceeds_source_standingsamt_capture_ceiling, den Ceiling-Tabellen und dem Report-Abschnitt inlint_core.pysearch/ripgrep.py,search/types.py), Kommentarpfade insearch/base.py,search/filters.py,search/service.py, MCP-Beschreibung inmcp/server.py, Beispielzeile inindex_build.pyconfidence_baseauscorpus_diff.STRUCTURAL_FIELDS; Kommentarpfade inpage.py,api.py,conventions.py,doctor.py,docs_verify.py,new_page.py,search.pykb/CONTRACT.md § Confidenceinkl.### Confidence against source standing(–51 Zeilen); Rubrik inkb/CONVENTIONS.mdund.templatedurch## Hedgingersetzt; Rubrikzeile ininstructions/kb-profiles.md; Zeile ininstructions/german-terminology.md; Erwähnungen ininstructions/capture-session.md,instructions/migrate-corpus.md,instructions/private-instance.md,instructions/setup-instance.md,raw/CONTRACT.mdwiki-lint(Frontmatter-description, Checkliste, Schritt 8, Kommandoliste),wiki-query(Trefferbeschreibung, Beispielprädikat, Hedging-Schritt),wiki-manage(Lesehinweis, Hand-Edit-Verbot)README.md,tools/README.md,AGENTS.md,tools/CONTRACT.md,INSTALL.md,INSTALL-MCP.md,instructions/dev/issue-tracking.mdtest_confidence_decay.pygelöscht; Fixtures in 17 weiteren Testdateien bereinigtfidelityundauthorityauf den Source-Seiten blieben unberührt.Was hinzugekommen ist
version bump --migration-required(version_cmd.py,version.py, sechs Tests)._set_marker_linekonnte die**Migration:** none required-Zeile nur ersetzen, nie entfernen — der laufende Kandidat hatte sie aus einem früheren Bump, und dieses Paket machte sie falsch. Das Flag entfernt sie und verlangt vorher ein Migrationsdokument für die neue Basisversion. Nachgezogen in11cbb15:instructions/dev/version-parts.mdSchritt 6 beschreibt den Pfad jetzt selbst, samt der Begründung, warum ihn nichts meldet (maschinengeschriebene Zeile,docs verifygenügt ihr Vorhandensein, Eskalationsprüfungen laufen nur auf dem erstüberschreitenden Bump).Unterwegs gefunden und behoben: beim Entfernen der Zwei-Stellen-Rundung in
frontmatter_io._format_scalarfiel der Float-Zweig komplett weg. Ein echter Float landete damit in der String-Quoting-Logik, deren Round-Trip-Probe für Strings gilt —0.9wäre als'0.9'geschrieben worden und beim nächsten Lesen ein String gewesen. Vor dem Korpuslauf durch eine Round-Trip-Probe an einer echten Seite aufgefallen, Zweig alsisinstance(value, (int, float))wiederhergestellt (ohne die konfidenzspezifische.2f-Formatierung), Regressionstest intest_frontmatter_io.py.Was an seine Stelle getreten ist
Nichts Neues.
kb/CONVENTIONS.md § Hedginghedged nach Quellenlage statt nach Schwellenwert:provenance: generalohnesources:wird als Allgemeinwissen benannt, eine Aussage trägt dieauthorityihrer schwächsten tatsächlich herangezogenen Quelle, Uneinigkeit zwischen Quellen wird in Prosa benannt. Die Arbeitsliste läuft über--field '!sources',--field provenance=general,--sort modifiedund die bestehendenlint-Befunde.Bewusst hingenommener Verlust
confidence_exceeds_source_standingist mit dem Feld gestorben — der einzige automatische Abgleich zwischen dem, was eine Seite beanspruchte, und dem, was ihre Quellen trugen. Der Ersatz ohne Zahl (Prosa-Kriterium nach Commonplace-Vorbild, stichprobenweise inwiki-lint) steht als erster Antwortkandidat in #85, Trigger 1, und war bewusst nicht Teil dieses Pakets.Sequencing (Entscheidung des Operators, 2026-09-10)
Beide Schemas tragen
additionalProperties: false: mit dem Wegfall der Properties waren alle 152 Seiten sofort schemainvalide, nicht bloß veraltet, undci.yml:161fährtlint --fail-on-erroraufmain. Ein eigener Publish für dieses Paket hättemainrot gelassen, bis #86 durch ist. Deshalb: kein Fenster, ein Publish für beide.Geprüft und verworfen:
schema_validation_errorsüberMIGRATION_GATED_KEYSgaten (setzt die gesamte Schemavalidierung für die Fensterdauer aus) und die Properties transient im Schema stehen lassen (die „forbidden middle" aus #85).Akzeptanzkriterien
grep -r "confidence" types/ tools/chemenu/ instructions/ kb/CONTRACT.md kb/CONVENTIONS.mdohne Treffer — mit einer bewusst zugelassenen Ausnahme:tools/chemenu/tests/test_touch.pynennt--confidence-baseim Namen, Docstring und in der Assertion des Regressionstests, der beweist, dass das Flag weg ist. Ein Test auf die Abwesenheit einer Sache muss sie benennen; das ursprüngliche Kriterium hatte diesen Fall nicht bedacht. Historische Nennungen inCHANGES.md,instructions/migrations/,instructions/dev/issue-tracking.md(Stub-Fallbeispiel) undinstructions/migrate-corpus.md(Vor-1.0.0-Baseline) bleiben ebenfalls stehen.wikitool confidenceexistiert nicht mehr;docs verifyzählt jetzt 51 statt 53 Kommandoswikitool newerzeugt eine schemavalide Seite ohne die Felderwikitool touch --confidence-baseschlägt fehl — als unbekannte CLI-Option, mit CliRunner-Test abgedecktwikitool search --field 'confidence<0.6'schlägt fehl statt still leer zurückzukommen:filters.validate_fieldsweist jedes Prädikat auf ein Feld ab, das keine Seite trägt, und nennt die vorhandenen Felder. Das brauchte keinen neuen Code, nur den abgeschlossenen Korpuslauf aus #86lintläuft ohne den entfernten Check;schema_validation_errors: 0 (Reportreports/Lint Report 2026-09-10.md)version bump --migration-requiredentfernt die Zeile; sechs Tests decken Rücknahme, fehlendes Migrationsdokument, fehlende Zeile, Konflikt mit--no-migration, fehlenden Kandidaten und deninsert_changes_entry-Pfad ab5.0.0-Eintrag trägt keine**Migration:** none required-Zeile mehr;docs verifyverlangt stattdessen das Migrationsdokumentdoctor,docs verify,instructions verify,pytest(1095) gründist export→ frische Instanz,setup-instance.md-Replay in CI grün (Lauf 219, Schritt „The distribution works as a fresh instance")kb/CONVENTIONS.mdund.templateenthalten die Hedging-Regel ohne Schwellenwerteinstructions/migrations/5.0.0-confidence-removal.mdbeschreibt die Feldentfernung ausführbar (129 Zeilen,migration_kind: mechanical,obligation: required)54d9540, 225 Dateien)Version
--major, grenzüberschreitend, im laufenden Kandidaten5.0.0(bei Publish-beta.6). Der Kandidat hatte die Grenze schon überschritten, eine zweite Eskalationsentscheidung entfiel daher. Die**Breaking Change:**-Zeile ist zu einer Aussage zusammengeführt, die beide Brüche des Kandidaten nennt (TOC-Pflicht aus dem früheren Bump und die Konfidenz-Entfernung) und auf das Migrationsdokument zeigt.Die billigere Alternative — Felder als optional-und-ignoriert stehen lassen,
--minor— wurde geprüft und verworfen: zwei Zahlen, die aussehen wie ein Urteil und keines mehr sind. Entscheidung des Operators am 2026-09-10: voller Schnitt.Notiz aus #67 — kein Ausarbeitungsversuch, Issue bleibt
status/incoming.Der Backfill von
fidelity/authority(#67, Publish 2/3,00220f8) hat dem Verdacht „fühlen sich zu hoch an" zum ersten Mal eine Messung danebengestellt: der neue beratendelint-Befundconfidence_exceeds_source_standingmeldet 67 von 152 Seiten mitconfidence_base(44 %) — 47 gegen die 0.8-Obergrenze (authority: reporting), 20 gegen die 0.6-Obergrenze (opinion). Betroffene Werte: 21× 0.95, 19× 0.90, 9× 0.85, 15× 0.80.Der mutmaßliche Mechanismus dahinter, als Stichwort für die spätere Ausarbeitung: die Rubrik in
kb/CONVENTIONS.mdlässt Quellenzahl (+0.2 je Quelle, max +0.6) und Aktualität (+0.2) allein bis 0.9–0.95 laufen, während der Autoritätsterm (+0.1 offizielle Doku) der kleinste Summand ist. Ein Korpus, der zu ~55 % aus Gesprächstranskripten kompiliert ist, sammelt damit hohe Werte aus Menge und Frische, ohne dass die Quellenlage das trägt.Damit stehen sich zwei Lesarten gegenüber, und welche stimmt, ist genau die Frage, die dieses Issue stellt:
reportingist für einen selbstdokumentierenden Korpus zu eng, weil eine Design-Session, in der der Operator etwas entscheidet, für diesen Gegenstand mehr ist als ein Bericht — dann wandert die Korrektur in die Schwellentabelle (kb/CONTRACT.md), nicht in die Rubrik.Der Decay-Teil des Stubs ist davon unberührt und weiterhin ungemessen.
Nicht getan und bewusst offen gelassen: Triage, Labels, Body-Rewrite. Die Zahlen sind reproduzierbar über
tools/wikitool lint, Abschnitt „Confidence Above Source Standing".Confidence Level und Decay justierento Konfidenz-Mechanismus ersatzlos entfernenAusarbeitung des Stubs,
status/incomingentfernt.Der ursprüngliche Text dieses Issues, wörtlich — der Body ist damit überschrieben, und dies ist die einzige verbleibende Aufzeichnung der Anforderung:
Changelog: Stub gegen den Baum geprüft und ausgearbeitet. Beide Vermutungen bestätigten sich nicht in der Form, in der sie gestellt waren: die zu hohen Werte sind fast vollständig PoC-Altbestand (alle 47 Rubrikverletzungen und 66 von 67 Obergrenzen-Befunden liegen in der Kohorte
created <= 2026-08-13, die 21 Seiten der aktuellen Praxis sind sauber), und der Decay ist nicht zu klein, sondern hat noch nie gewirkt. Die Untersuchung führte über vier Entwürfe — Rubrik nachjustieren, Quellenautorität anheben, Wert ausauthority × fidelityberechnen, zwei Schubladen für Reifegrad und Volatilität — die alle an konkreten Messwerten scheiterten. Ergebnis: der Mechanismus wird ersatzlos entfernt,--major. Titel entsprechend geändert, alle vier Pflichtlabels gesetzt,status/incomingentfernt.Neu abgezweigt: #85 hält die vollständige Studienlage, den Lösungskonflikt, die Commonplace-Referenz (ADR 044 — dasselbe Feld, dieselbe Diagnose, dort 2026-07-11 gelöscht) und fünf benannte Wiederaufnahme-Trigger — das Thema ist zurückgestellt, nicht vom Tisch. #86 trägt die Korpusmigration über die 152 Seiten und ist auf dieses Issue geblockt.
Nicht in diesem Paket und bewusst offen: der Ersatz für den wegfallenden
confidence_exceeds_source_standing-Check. Kandidat und Begründung stehen in #85, Trigger 1.Changelog: Umsetzung vorbereitet, Body gegen den Baum geprüft. Drei Korrekturen und zwei Ergänzungen.
Neu und blockierend war das Sequencing: beide Schemas tragen
additionalProperties: false, also fallen mit den Properties alle 152 Seiten alsschema_validation_errorsaus — überzählige Felder, nicht fehlende. Das alte Akzeptanzkriterium („keine Fehler wegen fehlender Felder") zielte in die falsche Richtung und ist korrigiert. Daci.yml:161lint --fail-on-erroraufmainfährt, wäremainbis zum Abschluss von #86 rot. Entscheidung des Operators: kein Fenster, #86 landet im selben Publish. Zwei Alternativen geprüft und im Body als verworfen festgehalten (MIGRATION_GATED_KEYSaufschema_validation_errors; Properties transient stehen lassen).Neu ist ein § Was hinzukommt:
version bumpbekommt ein Rücknahme-Flag für die**Migration:** none required-Zeile._set_marker_linekann sie nur ersetzen, und der laufende Kandidat5.0.0-beta.3trägt sie aus einem früheren Bump — dieses Paket macht sie falsch, und wederversion bump(was_already_crossing) nochdocs verify(Marker genügt) würde das melden. Handedit scheidet nach Invariante 1 aus.§ Version umgeschrieben: der Kandidat steht bereits jenseits der Grenze und trägt die
**Breaking Change:**-Zeile, also entfällt die zweite Eskalationsentscheidung nachversion-parts.mdSchritt 4. Offen ist nur die Migrationsseite.Streichliste ergänzt um
INSTALL-MCP.md,instructions/capture-session.md,types/instruction.md,types/type-spec.mdund die Kommentarpfade insearch/base.py,search/filters.py,search/service.py,conventions.py,doctor.py,docs_verify.py. Zwei Entwarnungen aufgenommen:conventions.pyverlangt keine „Confidence rubric"-Überschrift, unddocs/erwähnt den Mechanismus nirgends — kein Staleness-Nachlauf.Changelog: Umsetzung abgeschlossen, Body auf Endstand. Alle Akzeptanzkriterien abgehakt; verifiziert benannt:
pytest1095,doctor/docs verify/instructions verify/lint --fail-on-errorlokal grün, CI-Lauf 219 grün über alle neun Schritte inkl. Export-Replay als frische Instanz.Zwei Punkte gegenüber dem Planungsstand:
Das grep-Kriterium ist mit einer benannten Ausnahme abgehakt statt buchstäblich erfüllt — der Regressionstest, der beweist, dass
--confidence-baseweg ist, muss das Flag benennen. Das Kriterium hatte den Fall nicht bedacht; die Ausnahme steht jetzt mit Begründung im Body statt als stiller Verstoß.Unterwegs ein selbst eingeschleppter Defekt: das Entfernen der Zwei-Stellen-Rundung in
frontmatter_io._format_scalarnahm den ganzen Float-Zweig mit, wodurch echte Floats in die String-Quoting-Logik fielen und als'0.9'— also als String — geschrieben worden wären. Vor dem Korpuslauf durch eine Round-Trip-Probe an einer echten Seite aufgefallen, behoben, Regressionstest ergänzt. Der Korpus war davon nie betroffen, weil die einzigen Float-Felder genau die entfernten waren.Nachgezogen in
11cbb15:instructions/dev/version-parts.mdSchritt 6 beschreibt den--migration-required-Rücknahmepfad.tools/CONTRACT.mdführte das Flag schon, aber die Instruction, die eine Sitzung vor einem Bump liest, kannte den Fall nicht — dieselbe Sitzung ist genau darüber gestolpert.