Files
VianoBugAnalysis/docs/response-format-recovery.md
T

4.7 KiB

Begrenzte Formatrettung in der Hypothesenuntersuchung

Die versionierte Untersuchungspolicy response_recovery_version = 1 aktiviert zwei Mechanismen. Das schlanke Testprofil aktiviert diese Version ausdrücklich; der Standardwert 0 und alte gespeicherte Policies behalten das bisherige Verhalten. Andere Analysephasen werden nicht umgestellt. docs/architecture.md bleibt unverändert: Es wird weiterhin ausschließlich eine vollständig validierte Antwort atomar verarbeitet, niemals ein herausgelöster gültiger Rechercheauftrag neben ungültigen Zustandsänderungen.

Deterministische Normalisierung

Die Anfrage trägt den Schema-Marker x-viano-response-recovery: 1. Nur markierte Investigation-Aufrufe erhalten die folgenden Regeln:

  • Ein einzelner äußerer Markdown-Codeblock ohne Sprachangabe oder mit json wird entfernt. Zusätzliche Prosa und beliebige JSON-Syntaxfehler werden nicht repariert. Doppelte Schlüssel bleiben ungültig.
  • Ein einmal JSON-kodiertes Objekt wird streng dekodiert: als gesamte Antwort oder an bekannten Objektstellen wie next.arguments und einem Belegobjekt. Freie Texte werden nicht in fachliche Objekte umgedeutet.
  • Primitive DB-Filter ["id","eq",1] oder ["column","id","operator","eq","value",1] werden bei eindeutig gültigem Spaltennamen und bekanntem Operator zu [{"column":"id","operator":"eq","value":1}] normalisiert. Die Werte bleiben unverändert; Tabellen, Spalten, Operatoren und Grenzen werden danach weiterhin durch den vollständigen Werkzeugvertrag geprüft.

Originaldarstellung, normalisierte Antwort und angewandte Regeln werden im append-only LLM-Aufruf gespeichert. Rohtexte befinden sich ausschließlich im Paket-Audit, nicht in Fehlerdiagnosen oder Logs. Erst nach vollständiger Schema-, Beleg-, Budget- und Toolprüfung wird eine Aktion ausgeführt. Ein kurzer Hinweis auf die Normalisierung wird im nächsten regulären Aufruf mitgegeben, ohne einen zusätzlichen Korrekturaufruf zu erzeugen.

Kleiner LLM-Reparaturaufruf

Verbleibende, ausdrücklich zugelassene Container-Typfehler können einen investigation_format_repair_v1-Aufruf erzeugen. Er enthält die bereits generierte Antwort, den Fehlerpfad, den betroffenen Schemaausschnitt und wenige Bindungsdaten (Hypothese, vorheriges Ergebnis und sichtbare E-IDs). Er enthält keine erneute Fallinterpretation, Codehistorie, Rohbelege oder allgemeinen Rechercheanweisungen.

Die LLM gibt ausschließlich replacement für genau diesen Strukturpfad zurück. Das Programm setzt die Antwort selbst zusammen. Alle skalaren Werte müssen samt Typ und Häufigkeit erhalten bleiben; vorhandene benannte skalare Zuordnungen dürfen nicht verschwinden. Bei erkennbaren Filtertripeln bleiben außerdem die Positionen von Spalte, Operator und Wert verbindlich; ein Tausch gleichartiger Strings zwischen Spalte und Wert wird abgelehnt. Außerhalb des Pfads bleibt die Antwort exakt gleich. Die vollständige rekonstruierte Antwort wird anschließend erneut gegen den ursprünglichen fachlichen Vertrag geprüft. Quelle, Hash, Patch und rekonstruierte Antwort bleiben über Checkpoints auch nach Paketwiederaufnahme nachvollziehbar.

Erfundene Belege, unbekannte Aktionen, Confidence-Änderungen und nicht eindeutig strukturbezogene Fehler werden damit nicht legitimiert. Ein bloßer Prosasatz anstelle eines Belegobjekts lässt sich beispielsweise nicht ohne erfundene ID-/Rollen-/Referenzangaben vervollständigen und erhält keine solche Reparatur. Ein Änderungsvorschlag mit anderen Abfragewerten wird abgelehnt. Bestehende Invalid-Response-Limits gelten auch für Reparaturversuche. Transportfehler behalten die vorhandenen Failover-/Retry-Regeln. Nicht unterstützte Fehler bleiben im bisherigen kontrollierten Ablehnungspfad.

Grenzen und Aktivierung

Die Formatrettung ist auf 65.536 UTF-8-Bytes Antwort-/Reparaturdaten sowie 16 Normalisierungen begrenzt. Das sind Sicherheitsgrenzen dieses versionierten Mechanismus, keine Grenzen des Case-Paketformats. Größere Antworten werden nicht für einen Reparaturaufruf dupliziert. Zu große oder nicht reparierbare Antworten werden nicht abgeschnitten oder teilweise ausgeführt.

Neue Untersuchungen müssen die Policy initialisieren. Eine laufende Untersuchung wird nicht still auf eine andere Policy umgestellt. Historische Kontexte ohne Marker, Audit oder Reparaturdescriptor ergeben unveränderte Prompts.

Lokale Tests decken Originalerhaltung, einmalige Ausführung, Hinweise ohne Extraaufruf, Wiederaufnahme und die Ablehnung geänderter Abfragewerte sowie unbekannter Aktionen/Belege ab. Ein gezielter Reparaturprompt bleibt im geprüften Fixture bei 2.199 statt 10.353 Zeichen des normalen Untersuchungsaufrufs. Das ist keine allgemeine Kosten- oder Qualitätsgarantie; bezahlte Tests erfolgen separat.