- Routing-Prompt: Restriktionsnamen als Muster beschrieben statt kopierbarer Beispiele,
kein Indexbuchstabe im identifier (Weiter_ab_Woche_k löste in 3/3 Läufen eine
unnötige Solver-Reparatur aus)
- check_constraint_coverage: identifier …_k passt zu …_2, nur ohne direkten Treffer
(nonneg_x/nonneg_y bleiben getrennt)
- check_answer_units: englische Einheitenwörter (tons, hours, euros …); vorher strich
eine Reparatur die richtige Einheit aus einer Antwort auf eine englische Aufgabe
- QUESTION_PATTERN erkennt **Teil 1:** Text
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- sandbox_warning: fehlt bubblewrap oder ist SOLVER_SANDBOX=aus, steht das im Log
und in SolverRun.warnings (vorher lief der Code stillschweigend ungeschützt)
- Dijkstra-Markierung: der Report erklärt den Begriff selbst (DIJKSTRA_EXPLANATION),
check_text_quality zählt das als Erklärung; Stamm 'markier' -> 'markierung'
- Pruef-Prompt Regel 7: entscheidungsunabhängige Terme ohne Zahlenwert dürfen
weggelassen oder symbolisch mitgeführt werden (wagner_whitin_dijkstra: 1+1 statt
2+1 Korrekturrunden, n=2)
- revision_reasons: jede Korrekturrunde nennt ihren Auslöser im Log
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wortstämme aus 252 gespeicherten Läufen, jeder gegen ngerman/american-english
geprüft; Wörter mit _ oder Binnenmajuskel gelten als Bezeichner.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
check_answer_units meldet Einheiten hinter Zahlen, die weder Aufgabentext noch
Datenprofil hergeben (nach Größenart, GE/ME neutral bei Kosten-/Mengenwörtern);
Befund löst Solver-Reparatur aus, bleibt er, Warnung. Reparaturmeldung und
Solver-Prompt nennen data_assumptions jetzt als Antwortfeld, nicht report()-Argument.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ursache der Umschreibungen ist kein Encoding-Problem: das LLM schreibt
im erzeugten Python-Code ASCII (Portfolio Nr. 2: Code-Strings 0 echte
gegen 60 umschriebene Umlaute, Spezifikation 128 echte). Die
Prompt-Regel wurde ignoriert, die Warnung stand in fast jedem Lauf.
- Solver-Prompt: Umschreibungen in Bezeichnern, DATA-Schluesseln,
Restriktionsnamen und Kommentaren erlaubt; echte Umlaute nur in
Lesertexten, Regel direkt bei den report()-Argumenten.
- check_text_quality meldet keine Umlaute mehr (Fachbegriffe bleiben).
- umlaut_map baut je Lauf ein Woerterbuch aus Aufgabe und Spezifikation;
repair_texts wendet es vor UMLAUT_STEMS an. ASCII-Formen aus dem
Aufgabentext (Namen) bleiben, Restriktions-/Variablennamen unberuehrt.
An vier gespeicherten Laeufen: alle Umschreibungen in Lesertexten
berichtigt, 11 Ersetzungen, keine falsch. Prompt-Kennung 694c3eb3d59a.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Im Wurzelverzeichnis liegt nur noch TextToModel.py (Ablauf und CLI).
Jede Stufe liegt mit Code und Prompt in einem eigenen Ordner: core,
understanding, modeling, checks, solving, reporting, data, benchmark;
Tests unter tests/, Aufgaben unter tasks/. understand_task,
text_to_model/revise_model und review_assumptions/needs_work/select_best
sind aus TextToModel.py zu ihren Prompts gewandert, inhaltlich
unveraendert. Prompt-Kennung des Benchmarks bleibt 93744636095a.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>