Normalize investigation formats and repair bounded response fragments
This commit is contained in:
1 parent
f5a87dfca3
commit
bfb353eca2
15 files changed
+722
-9
No files matched your search
@@ -0,0 +1,79 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user