feat: fehlende Werte und simulierte Daten müssen ausgewiesen und genannt werden
- check_generated_data: nennt extracted_values einen Wert als fehlend („nicht genannt“, „unbekannt“, „offener Parameter“; Werte aus beigelegten Dateien ausgenommen) und data_assumptions ist leer -> undeclared_data (Reparatur, sonst unzuverlässig). An 211 gespeicherten Läufen 8 Treffer, alle echt. - check_answers_disclose_assumptions: bei selbst erzeugten Daten muss Antwortsatz oder eine Antwort das sagen -> Reparatur, sonst Warnung. 1 Treffer, echt. - Summenprüfung: bleibt nach Abzug der Summenzeilen keine Zeile, ist nur die Schlusszeile die Summe (Fehlalarm „Summe (0)“ kostete zwei Reparaturen). Nachlauf 20260918-140124: ehrlich_fehlende_kursdaten und ehrlich_fehlender_bedarf 2/2. Ändert die Prompt-Kennung (Solver-Prompt.txt). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
d6bad28cb2
commit
20ac3f14d7
1 changed files with 159 additions and 12 deletions
|
|
@ -805,3 +805,18 @@ def test_expected_rejection_has_no_routing_to_score(monkeypatch):
|
|||
erwartet = benchmark.run_case({"name": "g", "task": "-", "expected": {"behavior": ["rejected"]}}, "fake", 1)
|
||||
falsch = benchmark.run_case({"name": "lp", "task": "-", "expected": {"objective_value": 9, "tolerance": 1e-6}}, "fake", 1)
|
||||
assert erwartet["class_ok"] is None and falsch["class_ok"] is False # eine unerwartete Ablehnung bleibt ein Fehler
|
||||
|
||||
|
||||
def test_missing_value_without_declared_assumption_is_repaired_or_unreliable():
|
||||
# ehrlich_fehlender_bedarf: fehlender Wert still eingesetzt ⇒ Reparatur; bleibt es ⇒ unzuverlässig
|
||||
from core.model_schema import ParameterDefinition
|
||||
fehlend = GOOD.model_copy(update={"parameters": GOOD.parameters + [ParameterDefinition(
|
||||
symbol="d_3", dimension="Skalar", unit="Kisten", description="Bedarf G3",
|
||||
extracted_values="im Text nicht genannt")]})
|
||||
ausgewiesen = SolverCode(code=STRUCTURED_CODE, data_assumptions=["d_3 = 0 Kisten angenommen, im Text nicht genannt"])
|
||||
session = FakeSession([fehlend], [OK], [SolverCode(code=STRUCTURED_CODE), ausgewiesen])
|
||||
result = run_pipeline("Aufgabe", session=session, max_revisions=0, max_restarts=0)
|
||||
assert session.steps.count("Solver-Reparatur") == 1 and result.reliable
|
||||
session = FakeSession([fehlend], [OK], [SolverCode(code=STRUCTURED_CODE)] * 3)
|
||||
result = run_pipeline("Aufgabe", session=session, max_revisions=0, max_restarts=0)
|
||||
assert not result.reliable and any(i.startswith("Datenherkunft") for i in result.reliability_issues)
|
||||
|
|
|
|||
Loading…
Reference in a new issue