Stabilize bounded investigation contracts and targeted recovery
This commit is contained in:
1 parent
ed148b1a50
commit
3a82a37ee6
17 files changed
+663
-28
No files matched your search
@@ -0,0 +1,62 @@
|
||||
# Begrenzte Untersuchungsdarstellung v2
|
||||
|
||||
Die bestehende begrenzte Untersuchung bleibt bei einem Richtwert von 10.000 und
|
||||
höchstens 20.000 Zeichen für den vollständigen logischen Provider-Input, inklusive
|
||||
Systemtext, Cache-Präfix und gegebenenfalls transportiertem Antwortschema.
|
||||
Dies sind Kontextregeln der Untersuchung, keine Paketformatgrenzen.
|
||||
|
||||
## Antwortformat und Identitäten
|
||||
|
||||
`prompt_window_version = 2` ersetzt verschachtelte Schema-Dokumentation mit
|
||||
`choices`/`const` durch kompakte textuelle Signaturen und bei Rechercheentscheidungen
|
||||
ein ausdrücklich als Formbeispiel bezeichnetes, wörtliches JSON-Objekt. Beispielwerte
|
||||
sind Platzhalter, keine Recherchevorgabe. Das vollständige kanonische JSON-Schema
|
||||
bleibt der ausführbare Validator. Gemini erhält im Textpräfix kein zusätzliches
|
||||
Duplikat dieses Schemas; native Schemaübertragung und lokale Prüfung bleiben erhalten.
|
||||
|
||||
`input.entities` enthält die unveränderten kanonischen N-Referenzen mit typisierten
|
||||
IDs, Namen und Rollen aus `case_sources`. Gleiche numerische IDs verschiedener
|
||||
Entitätstypen werden nicht zusammengeführt. Eine beobachtete oder primäre Entität
|
||||
ist nicht automatisch der Fehlergegenstand. Frühere Interpretation wird als solche
|
||||
gekennzeichnet. Unbekannte N-Referenzen dürfen keinen Toolauftrag auslösen.
|
||||
|
||||
## Fehlerbehandlung
|
||||
|
||||
Schemafehler werden mit Feldpfad, Pflichtfeldern und knapper Handlungsanweisung
|
||||
zurückgemeldet, auch wenn die äußere Providerprüfung bereits abgelehnt hat.
|
||||
Fehlerhinweise enthalten keine ungeprüften Nutzdaten.
|
||||
|
||||
Bei aktivierter Antwortreparatur wird ausschließlich die eindeutige Hülle
|
||||
`next.arguments = {"choices": [<ein einzelnes Query-Objekt>]}` entfernt, wenn die
|
||||
Aktion bereits wörtlich `tool`/`project.query` und der Query-Kind vorhanden ist.
|
||||
Andere Felder, IDs und Beobachtungen bleiben unverändert; Original und Reparaturregel
|
||||
werden im LLM-Aufruf protokolliert. Vor Budgetreservierung und Ausführung gelten
|
||||
weiterhin sämtliche Schema-, Beleg-, Identitäts- und semantischen Prüfungen.
|
||||
Mehrere Alternativen, zusätzliche Geschwisterfelder, unbekannte Aktionen, fehlende
|
||||
Pflichtwerte oder rohe IDs anstelle von N-Referenzen werden nicht geraten.
|
||||
Insbesondere ergänzt die Reparatur keinen fehlenden Offset oder Query-Kind.
|
||||
|
||||
## Aktivierung und Nachweis
|
||||
|
||||
`config/investigation.bounded.toml` aktiviert Version 2 für neue Untersuchungen.
|
||||
Eine vorhandene Case-Akte behält ihre eingefrorene Policy; sie wird nicht migriert.
|
||||
Version 1 bleibt für historische Request-Rekonstruktion unverändert verfügbar.
|
||||
Ein neuer Test benötigt daher einen frischen Fall beziehungsweise eine neue
|
||||
Analyse-Revision mit dieser Konfiguration.
|
||||
|
||||
Die Offline-Gegenprobe im Bericht
|
||||
`test-results/token-usage/investigation-contract-v2-offline-20261020.json`
|
||||
rekonstruiert alle sieben gespeicherten Startup-Anfragen aus dem letzten begrenzten
|
||||
Test mit identischen Messages, Schema und Prompt-Version. Mit v2 liegen dieselben
|
||||
Kontexte einschließlich Cache-Präfix bei 8.460 bis 14.817 Zeichen. Zwei ältere
|
||||
Folgeschritte ergeben 9.331 und 12.064 Zeichen. Der Richtwert wird damit nicht
|
||||
überall erreicht; die harte Grenze bleibt gewahrt. Es wurden keine API-Aufrufe
|
||||
getätigt. Dies belegt Darstellung und Grenzen, noch keine bessere LLM-Antwortqualität.
|
||||
|
||||
Lokale Tests prüfen die echten kuratierten Ablehnungen, sichere und verweigerte
|
||||
Reparaturen, unveränderte IDs, fehlende Budgetnebenwirkungen, Wiederaufnahme nach
|
||||
Unterbrechung, gemeinsame Startbewertung, Checkpoints bis zum Abschluss sowie
|
||||
Cache-Aufteilung und frühe Diagnose-Routingentscheidung.
|
||||
|
||||
Validierung am 20.10.2026: 307 lokale Tests bestanden (171,87 Sekunden),
|
||||
`git diff --check` ohne Befund. Keine kostenpflichtigen LLM-Tests ausgeführt.
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"format": "viano-test-cost-update",
|
||||
"format_version": 1,
|
||||
"recorded_date": "2026-10-20",
|
||||
"run": "bug20-bounded-window-20261020",
|
||||
"package_generation": 50,
|
||||
"token_report": "bug20-bounded-window-20261020-g00000050.json",
|
||||
"account_eur": {
|
||||
"start": 12.7,
|
||||
"latest_reported": 12.83,
|
||||
"difference": 0.13,
|
||||
"settlement": "user_reported_updated_balance_further_updates_possible"
|
||||
},
|
||||
"source": "User-reported Google API account balance",
|
||||
"notes": [
|
||||
"Original token report remains unchanged.",
|
||||
"EUR account difference is separate from USD token cost estimates."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"kind": "offline_rendering_comparison",
|
||||
"paid_api_calls": 0,
|
||||
"legacy_requests_exact_messages_schema_version": 7,
|
||||
"target": 10000,
|
||||
"limit": 20000,
|
||||
"note": "Counts include system, stable cache prefix and live input. Local schema is not duplicated as text in v2. No quality or cost claim from offline rendering. Existing v1 contexts unchanged.",
|
||||
"measurements": [
|
||||
{
|
||||
"trial": "bug20-bounded-window-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H1-0001.json",
|
||||
"legacy_policy": 1,
|
||||
"old_characters": 8992,
|
||||
"v2_characters": 8460
|
||||
},
|
||||
{
|
||||
"trial": "bug20-bounded-window-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H1-0001-attempt-0001.json",
|
||||
"legacy_policy": 1,
|
||||
"old_characters": 9036,
|
||||
"v2_characters": 8504
|
||||
},
|
||||
{
|
||||
"trial": "bug20-bounded-window-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H1-0001-attempt-0002.json",
|
||||
"legacy_policy": 1,
|
||||
"old_characters": 9036,
|
||||
"v2_characters": 8504
|
||||
},
|
||||
{
|
||||
"trial": "bug20-bounded-window-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H2-0001.json",
|
||||
"legacy_policy": 1,
|
||||
"old_characters": 12126,
|
||||
"v2_characters": 11594
|
||||
},
|
||||
{
|
||||
"trial": "bug20-bounded-window-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H3-0001.json",
|
||||
"legacy_policy": 1,
|
||||
"old_characters": 15189,
|
||||
"v2_characters": 14657
|
||||
},
|
||||
{
|
||||
"trial": "bug20-bounded-window-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H3-0001-attempt-0001.json",
|
||||
"legacy_policy": 1,
|
||||
"old_characters": 15233,
|
||||
"v2_characters": 14701
|
||||
},
|
||||
{
|
||||
"trial": "bug20-bounded-window-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H3-0001-attempt-0002.json",
|
||||
"legacy_policy": 1,
|
||||
"old_characters": 15349,
|
||||
"v2_characters": 14817
|
||||
},
|
||||
{
|
||||
"trial": "bug20-bounded-window-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H3-0001-attempt-0003.json",
|
||||
"legacy_policy": 1,
|
||||
"old_characters": 15233,
|
||||
"v2_characters": 14701
|
||||
},
|
||||
{
|
||||
"trial": "bug20-startup-batch-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H1-0001.json",
|
||||
"legacy_policy": 0,
|
||||
"old_characters": 25910,
|
||||
"v2_characters": 8483
|
||||
},
|
||||
{
|
||||
"trial": "bug20-startup-batch-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H2-0001.json",
|
||||
"legacy_policy": 0,
|
||||
"old_characters": 33693,
|
||||
"v2_characters": 11648
|
||||
},
|
||||
{
|
||||
"trial": "bug20-startup-batch-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H3-0001.json",
|
||||
"legacy_policy": 0,
|
||||
"old_characters": 39998,
|
||||
"v2_characters": 14693
|
||||
},
|
||||
{
|
||||
"trial": "bug20-startup-batch-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H1-0002.json",
|
||||
"legacy_policy": 0,
|
||||
"old_characters": 24422,
|
||||
"v2_characters": 9331
|
||||
},
|
||||
{
|
||||
"trial": "bug20-startup-batch-20261020",
|
||||
"context": "analysis/investigation/0001/contexts/H1-0003.json",
|
||||
"legacy_policy": 0,
|
||||
"old_characters": 52425,
|
||||
"v2_characters": 12064
|
||||
}
|
||||
],
|
||||
"source_sha256": {
|
||||
"src/viano_bug_analysis/analysis/investigation_contract.py": "3b034fe557abf004d104525a0b771dfb8b45b6e4dd273f0993fc0c680df71537",
|
||||
"src/viano_bug_analysis/analysis/investigation_window.py": "d468d896d81c4eb49f2eccf640e45ed378cdde2df1c934fbce3893dec5d537d8",
|
||||
"src/viano_bug_analysis/llm/gemini.py": "9933052061298218bf574875cc8e9eb96de349e167fbc2e11379023f20d0d962",
|
||||
"config/investigation.bounded.toml": "b3693a0eab479b67af1049dd0725e8d8e18b30d70eea176fa6c30a7bba723cf9"
|
||||
},
|
||||
"storage_audit": {
|
||||
"limit_bytes": 20000000000,
|
||||
"measured_roots": {
|
||||
"service-data\\trials": 11174795619,
|
||||
"service-data\\benchmarks": 498385,
|
||||
"service-data\\test-archive": 1401997078,
|
||||
"tests\\fixtures\\llm_rejections": 2268510,
|
||||
"C:\\Users\\User\\AppData\\Local\\Temp\\pytest-of-User": 843846710
|
||||
},
|
||||
"note": "Read-only audit; no trial data deleted."
|
||||
},
|
||||
"local_tests": {
|
||||
"passed": 307,
|
||||
"elapsed_seconds": 171.87,
|
||||
"paid_api_calls": 0,
|
||||
"scope": "bounded v1/v2, startup, lean loop, gateway, caching, stable context, recovery, diagnostics, tool feedback"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user