Files
VianoBugAnalysis/docs/source-read-windows.md

76 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Begrenzte Source-Lesefenster
`project.query` mit `kind: source.read` liest weiterhin ausschließlich aus dem
konfigurierten Git-Snapshot. Übersteigt ein ansonsten gültiger inklusiver
Zeilenbereich `ProjectLimits.max_lines` (Default 80), wird er ab der angeforderten
Startzeile begrenzt ausgeführt. Die ursprüngliche Anfrage wird nicht verändert.
Die Grenze ist konfigurierbar und keine Grenze des Case-Paketformats.
Beispiel: 115–215 fordert 101 Zeilen an. Geliefert werden höchstens 115–194.
Das Capture enthält zusätzlich:
- `requested_line_count`, `line_limit`, `line_limit_exceeded`
- `returned_line_count` sowie angeforderten und gelieferten Start-/Endbereich
- `requested_range_complete`, `next_start_line` und einen kurzen `read_notice`
`truncated: true` und `requested_range_complete: false` bedeuten, dass noch
existierende Zeilen des angeforderten Bereichs fehlen. `next_start_line` nennt
dann die nächste lesbare Fortsetzungszeile. Zum Weiterlesen ursprünglichen Endwert
beibehalten; keine Zeilen überspringen oder erneut als neue Erkenntnis werten.
`eof` bezieht sich auf den tatsächlich gelieferten Ausschnitt, nicht auf den
ursprünglich gewünschten Endwert.
Erreicht das begrenzte Fenster bereits das Dateiende, ist keine weitere Ausgabe
nötig: `eof: true`, `truncated: false`, `next_start_line: null`. Dies gilt auch bei
einem Start hinter dem Dateiende mit leerem Ergebnis; das bisherige kontrollierte
EOF-Verhalten bleibt erhalten. Vollständigkeit bezieht sich ausschließlich auf
den angefragten Zeilenbereich bis EOF, nicht auf andere Dateien oder die gesamte
Implementierung. Bestehende `text_truncated`-Angaben einzelner langer Codezeilen
bleiben unabhängig davon erhalten.
Originalquery und Ergebnis werden gemeinsam unveränderlich im Capture gesichert.
Das Ergebnisschema erlaubt die zusätzlichen Metadaten optional, damit historische
Captures weiterhin gültig bleiben. Die begrenzte Investigation-Darstellung erhält
diese Bereichs-/Fortsetzungsdaten auch außerhalb paginierter JSON-Fragmente.
Normale Anfragen innerhalb der Grenze behalten ihre bisherige Ergebnisform.
Abgelehnt bleiben insbesondere nicht ganzzahlige oder nicht positive Startwerte,
umgekehrte Bereiche, unsichere Pfade und nicht vorhandene Dateien. Die anderen
Tooloperationen und deren Grenzen werden hierdurch nicht gelockert. Es findet
keine automatische Folgeabfrage statt und kein Inhalt wird erfunden.
Lokale Tests verwenden beide kuratierten Bug-17-Antworten mit 101 und 91 Zeilen,
prüfen exakt die zurückgelieferten Zeilen und lückenlose Fortsetzung, konfigurierbare
Grenzen, EOF, sichere Ablehnung, Capture-Persistenz, kompakte Scope-Angaben und drei
Controller-Startabfragen ohne Korrekturversuch. Keine bezahlten LLM-Aufrufe.
## Prüfergebnis am 20.10.2026
16 neue Tests bestanden. Gemeinsame Prüfung mit Projekt-Recherche, Source-Kontext,
begrenzter Investigation v1/v2 und Startup: 126 bestanden, 1 übersprungen,
5 fehlgeschlagen. Alle fünf Fehler wurden zusätzlich gegen den unveränderten
Commit `ab31924` reproduziert: ältere unbeschränkte Prompt-Tests treffen die
bereits bestehende 20.000-Zeichen-Sicherung statt ihres erwarteten Folgeschritts.
Betroffen sind `test_model_loop_uses_project_tools_and_compact_previous_result`
(Varianten True, unknown, upgrade), `test_started_project_loop_keeps_legacy_prompt_protocol`
und `test_budgeted_evidence_and_portable_hybrid_resume`. Keine dieser bestehenden
Grenzen wurde für diese Änderung gelockert. `git diff --check` ohne Befund.
## Explizite Wiederaufnahme nach technischer Reparatur
`CheckpointStore.advance(..., manual_retry=True)` erlaubt die vom Betreiber
bewusst angeforderte sofortige Wiederaufnahme eines mit `INVALID_LLM_RESPONSES`
blockierten Falls ausschließlich in dessen gespeicherten Fortsetzungszustand.
Ohne dieses ausdrückliche Argument gilt weiterhin `retry_not_before`.
Die manuelle Wiederaufnahme darf keine Artefakte oder zusätzlichen Dateien
ändern. Sie setzt weder Budget noch fachliche/technische Untersuchungsstände
zurück. `manual_retry: true` wird im neuen unveränderlichen Lifecycle-Checkpoint
protokolliert. Andere Blockierungsgründe, insbesondere `AWAITING_TEST_FEEDBACK`,
werden dadurch nicht entsperrt. Idempotenz und Generationserwartung bleiben aktiv.
65 lokale Tests für Checkpoints, Queue und asynchrone Tests bestanden. Bug17
wurde auf ausdrücklichen Nutzerwunsch von Generation 47 auf 48 fortgesetzt;
Artefakthashes und Budgeterhalt sind im separaten Wiederaufnahmebericht gesichert.
Keine kostenpflichtige LLM-Ausführung durch den Entwicklungsagenten.