fix: Nebenpfade behalten Kontext – Gegenprobe, --von, --resolve, UNDERSTAND_RETRIES=-1

- UNDERSTAND_RETRIES=-1 (A/B-Arm der Verstehensstufe) stürzte seit dem Ablehnungstor ab
- Unlösbar-Gegenprobe bekommt Verständnis, Datenprofil und Datendateien; ihre Lösung
  durchläuft dieselbe Abnahme (_assess_run)
- --von pruefung behält Verständnis, Abbildungen und Datenprofil
- --resolve überschreibt frühere Befunde nicht mehr (nur Zulässigkeit neu)
- --daten wirkt auch mit --resolve und --von
- Prüfung und Korrektur sehen das Datenprofil
- Reparaturmeldung nennt alle Befundarten zugleich
- Test der Balkenhöhe prüft die Höhe tatsächlich; unbenutzte Imports entfernt

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-09-18 13:22:53 +02:00
commit 3c4d2fb92c

View file

@ -1031,13 +1031,14 @@ def solve(session: LLMSession, task: str, spec: OptimizationModelSpecification,
attempt = 1
while (run.status == SolverStatus.ERROR or run.feasibility or run.undeclared_data or run.unsolved_scenarios
or einheiten) and attempt <= retries:
fehler = run.error or (("Die Lösung hält das Modell nicht ein:\n- " + "\n- ".join(run.feasibility))
if run.feasibility else
("Eingabedaten nicht ausgewiesen:\n- " + "\n- ".join(run.undeclared_data))
if run.undeclared_data else
("Szenario ohne Ergebnis:\n- " + "\n- ".join(run.unsolved_scenarios))
if run.unsolved_scenarios else
("Einheit in der Antwort erfunden:\n- " + "\n- ".join(einheiten)))
# Alle Befundarten zugleich melden – sonst kostet jede weitere Art einen eigenen Reparaturversuch
fehler = run.error or "\n\n".join(
titel + ":\n- " + "\n- ".join(befunde)
for titel, befunde in (("Die Lösung hält das Modell nicht ein", run.feasibility),
("Eingabedaten nicht ausgewiesen", run.undeclared_data),
("Szenario ohne Ergebnis", run.unsolved_scenarios),
("Einheit in der Antwort erfunden", einheiten))
if befunde)
log(f"Solver-Code fehlgeschlagen – Reparaturversuch {attempt}/{retries}: {fehler[:200]}")
solver_code = generate_solver_code(session, task, spec, previous=solver_code, previous_error=fehler,
understanding=understanding, data_prompt=data_prompt)