lint zählt Zitat-Zeilen statt Zitat-Blöcke, das Quote-Limit meldet umbrochene Zitate falsch #22
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?
Der Anlass
Beim Verifizieren von #8 (1.7.1) meldete
tools/wikitool lint --fail-on-error:Die Seite hat aber kein viertes Zitat, sondern genau eines. Zeilen 48-51:
Ein einziger Blockquote, auf vier Zeilen umbrochen.
Die Ursache
tools/wiki_tools/commands/lint.py:157:Gezählt werden
>-Zeilen, nicht Zitate. Damit misst die Regel die Zeilenbreite mit, gegen die sie gar nichts sagen will: dasselbe Zitat als eine lange Zeile geschrieben zählt 1, umbrochen zählt 4.Warum das mehr ist als ein Schönheitsfehler
Die Regel soll gegen zu viel wörtlich übernommenen Quelltext auf einer
kb/-Seite schützen — das ist eine Aussage über Menge an fremdem Wortlaut, und die korreliert mit der Zahl der Zitate, nicht mit dem Zeilenumbruch. In der jetzigen Form belohnt sie überlange Zeilen und bestraft die Umbruchbreite, die der Rest des Repos einhält. Ein Autor, der die Meldung ernst nimmt, macht die Seite also schlechter lesbar, um den Lint zu beruhigen.Praktisch schlimmer: ein Falschbefund pro Lint-Lauf gewöhnt den nächsten Leser daran, den Abschnitt zu überfliegen. Genau die Seiten, die die Regel finden soll, stehen dann daneben.
Vorschlag
Zusammenhängende
>-Zeilen als einen Block zählen — eine Leerzeile oder eine Nicht-Zitat-Zeile trennt zwei Zitate.QUOTE_LIMITbleibt bei 2, bedeutet dann aber „zwei Zitate", was es dem Namen nach ohnehin schon behauptet.Offen und bewusst nicht mitentschieden: ob zusätzlich eine Obergrenze für die Länge eines einzelnen Zitats sinnvoll ist. Ein 80-zeiliges Einzelzitat wäre nach dem Fix legal und ist vermutlich auch ein Befund — aber das ist eine zweite Regel mit eigener Schwelle, nicht dieser Bugfix.
Akzeptanzkriterien
Source - Conversation - Auto Mode and Tool Choice Session 2026-08-31verschwindet aus dem Bericht, ohne dass die Seite angefasst wird.Herkunft
Gefunden in der Sitzung zu #8, dort nicht behoben, weil es eine andere Datei und eine andere Regel ist als die dort geänderte.
Umgesetzt in 1.7.2 (
49bd7d4).count_quote_blocks()intools/wiki_tools/commands/lint.pyzählt jetzt Läufe zusammenhängender>-Zeilen; eine Leerzeile oder eine Nicht-Zitat-Zeile trennt zwei Zitate.QUOTE_LIMITbleibt bei 2 und bedeutet damit, was der Name schon behauptet hat.Über den Vorschlag hinaus: Code wird vor dem Zählen maskiert (dieselbe Hilfsfunktion wie #20). Ein
>in einem eingezäunten Shell-Transkript ist ein Fortsetzungsprompt oder eine Umleitung, keine Zitatzeile — ohne die Maskierung wäre der Blockzähler an dieser Stelle genauso falsch gewesen wie der Zeilenzähler.Bewusst nicht mitentschieden, wie im Issue vorgesehen: eine Obergrenze für die Länge eines einzelnen Zitats. Ein 80-zeiliges Einzelzitat ist nach diesem Fix legal. Das bleibt eine zweite Regel mit eigener Schwelle; kein Folge-Issue angelegt, weil es bisher keinen Befund dazu gibt — wenn einer auftaucht, ist er die Begründung.
Lazy continuation (ein Zitat, dessen umbrochene Zeilen das
>weglassen) zählt hier als zwei Zitate. Das überzählt in genau die Richtung, in die das Limit ohnehin irrt, und der Korpus präfixt jede Zeile — die Alternative (Absatzzustand mitführen) kauft nichts.Akzeptanzkriterien
test_lint_counts_a_wrapped_quote_once.test_lint_counts_separated_quotes_separately, plustest_lint_does_not_count_a_shell_prompt_as_a_quote. Alle drei waren gegen die alte Zeilenzählung nachweislich rot (verifiziert durch temporäres Zurücksetzen der Implementierung).Source - Conversation - Auto Mode and Tool Choice Session 2026-08-31ist aus dem Bericht verschwunden, ohne dass die Seite angefasst wurde —lint --jsonmeldetquote_limit_violations = [].