This commit is contained in:
team3
2026-07-27 12:47:32 +02:00
parent 1c8a4fd4fd
commit 41185eaccc
16 changed files with 582 additions and 230 deletions

View File

@@ -14,21 +14,50 @@ Fehlerhafte Karten öffnen sich rot markiert und zeigen unter jeder Stelle einen
mit ✓/✕; ✓ schreibt ihn in die Datei, die übrigen Vorschläge bleiben stehen. Unter dem
Icon steht der Fortschritt, rechts läuft ein Panel mit Problemliste.
Zwei Stufen je Prüfstelle. Was sich zählen lässt, zählt `struktur.py` — Wortzahl,
Satzzeichen am Zeilenende, Füllwörter, Klammern, Badge-Wert. Was es wegstreichen kann,
geht als fertiger Vorschlag durch, ganz ohne Anfrage. Der Rest hängt als Auftrag
„Gemessen, bitte neu schreiben" am Ausschnitt für das Modell. Das Modell darf diese
Klasse nicht selbst melden — sonst erfindet es Regeln, die im Katalog nicht stehen.
Höchstens ein gemessener Befund je Zeile: zwei Vorschläge für dieselbe Zeile wären
nicht unabhängig anwendbar.
Eine Anfrage je Prüfstelle, nicht je Karte:
Die Prüfung soll ein Format erzwingen, nicht Geschmack durchsetzen. Darum vier
Sperren gegen Beliebigkeit — jede einzeln nachgemessen:
```
Karte ──┬── Kartenebene titel · badge · ziel · regeln 1 Anfrage
├── Funktion 1 titel · ziel · regeln · testen 1 Anfrage
└── Funktion 2 … 1 Anfrage
1 Messen struktur.py Wortzahl, Satzzeichen, Füllwörter, Klammern, Badge
2 Umschreiben 4 Stimmen ganze Felder neu, nicht einzelne Zeilen
3 Belegen Code Änderung nur mit wörtlich zitierter Katalogzeile
4 Nachmessen struktur.py Vorschlag, der selbst verstößt, wird abgelehnt
```
**Messen.** Was sich zählen lässt, zählt der Code. Was er wegstreichen kann, wird zum
fertigen Vorschlag. Der Rest hängt als Auftrag „Gemessen, bitte neu schreiben" am
Ausschnitt. Diese Zeilen stehen im Katalog unter `## Vom System gemessen` und sind
nicht zitierbar — sonst beruft sich das Modell auf die Füllwortliste und wendet sie
auf Wörter an, die nicht darin stehen.
**Umschreiben.** Das Modell zeigt auf keine Zeile, es schreibt das ganze Feld neu.
Adressierung war die größte Fehlerquelle: verschmolzene Zeilen, erfundene Zeilen,
Zeilen aus dem Kontextblock. Welche Zeile sich geändert hat, rechnet `_stellen` aus.
`original` ist damit immer echter Kartentext.
**Belegen.** Jede Änderung nennt die verletzte Katalogzeile, wörtlich. Der Code prüft
sie gegen den Katalog. Ohne Beleg keine Änderung. Ohne diese Sperre findet ein Modell
immer irgendetwas zu verbessern.
**Vier Stimmen, einstimmig.** Dieselbe Stelle wird viermal beurteilt, mit steigender
Temperatur. Nur was alle vier bemängeln, wird ein Vorschlag; die Formulierung kommt
aus der Fassung, die den anderen am ähnlichsten ist. Grenzfälle sehen mal so, mal so
aus — einzelne Stimmen ließen jede Runde andere Felder aufschlagen.
Gemessen an den Karten dieses Projekts, 35 Prüfstellen:
```
ohne diese Sperren 41 Vorschläge, 12 davon systematisch kaputt
mit 4 Vorschläge, 0 kaputt
nach dem Annehmen 2 -> 1 -> 2 Ruhezustand
```
Eine Anfrage je Prüfstelle und Stimme, nicht je Karte:
```
Karte ──┬── Kartenebene titel · badge · ziel · regeln
├── Funktion 1 titel · ziel · regeln · testen
└── Funktion 2 …
```
Ein Vorschlag ersetzt seine Stelle eins zu eins. Was das bewirkt, sagt der Prüfer
@@ -41,11 +70,9 @@ mehrere Zeilen ersetzen die Stelle durch alle davon; steht die alte
leer streicht die Stelle
```
So muss das Modell keine Aktion auswählen. Es schreibt nur hin, was dort stehen soll.
Ohne umsetzbaren Vorschlag wird ein Problem verworfen statt leer angezeigt.
Vorschläge werden einzeln und in beliebiger Reihenfolge angenommen. Jeder muss
darum für sich allein anwendbar sein und selbst dem Katalog genügen.
Vorschläge werden einzeln und in beliebiger Reihenfolge angenommen. Jeder muss darum
für sich allein anwendbar sein. Baut das Modell eine ganze Liste um, wird daraus ein
einziger Vorschlag für das Feld — einzelne Zeilen daraus ergäben Dubletten oder Lücken.
Jede Anfrage bekommt nur ihren Ausschnitt der Karte und nur den Katalogteil, der für sie
gilt. Die Herkunft eines Problems stammt aus dem Code, nicht aus der Modellantwort.