Add audited operator approval for one entity repair attempt

This commit is contained in:
Nico committed 2026-10-24 22:22:16 +02:00
1 parent 4cbba4c1e4
commit 61889740e6
14 files changed
+296 -17

No files matched your search

+33
View File
@@ -160,6 +160,39 @@ noch abschließen; erst danach wird die Prozess-Lease freigegeben. Ein Dispatch
kann mehrere interne Schritte/Modellanfragen enthalten und entsprechend dauern.
Bei hartem Beenden greift beim nächsten Start der Checkpoint-Wiederanlauf.
## Freigabe nach einer technischen Korrektur
Bei `ENTITY_RESOLUTION_INVALID_RESPONSES` bietet die aktuelle Fallansicht die
Aktion **Einen Reparaturversuch freigeben**. Vorher die technische Ursache beheben
und im Pflichtfeld kurz dokumentieren (keine Secrets). Die Freigabe wird über den
authentifizierten Betreiberzugang mit CSRF-Schutz vorgemerkt. Maschinenclients
dürfen sie nicht auslösen. Der Worker prüft Zustand, Projektbindung und aktuelle
Paketgeneration erneut. Doppelte oder veraltete Aufträge gewähren keinen weiteren Versuch.
Jede Freigabe erlaubt genau einen zusätzlichen Antwortversuch in der betroffenen
Namensauflösungsstufe (Suchplan oder Bewertung), ohne die bisherigen Versuche zu
löschen. Eine gültige Reparatur kann anschließend den regulären Ablauf fortsetzen.
Scheitert sie, bleibt der Fall erneut gesperrt. Weitere Versuche benötigen eine neue
ausdrückliche Freigabe. Akteur, Begründung, betroffener Antwort-Hash und Code-Hash
werden dauerhaft als Checkpoint in der Fallakte gespeichert. Revision, gültiger
Suchplan, Recherchebelege und Untersuchungsbudgets werden nicht zurückgesetzt.
Die Freigabe selbst führt keine Modellanfrage aus; die anschließende Bearbeitung
kann reguläre LLM-Kosten verursachen.
Alternativ bei gestopptem Worker als root unter Linux:
```sh
/opt/viano-bug-analysis/.venv/bin/python -m viano_bug_analysis.worker repair --config /etc/viano-bug-analysis/worker.toml --case-id BUG-000021 --package-id api-PAKETIDENTITAET --reason "Technische Korrektur installiert; Namensbewertung gezielt reparieren"
```
Danach den Worker wieder starten. Der CLI-Befehl benötigt keinen Cloud-Schlüssel,
weil er nur eine Freigabe protokolliert. Die vorhandene Projektkonfiguration muss
unverändert gebunden sein. Diese Freigabe ist derzeit bewusst auf ausgeschöpfte
Namensauflösung beschränkt. Sie umgeht weder menschliche Rückfragen noch
fachliche Budgetgrenzen und öffnet keine erfolgreich abgeschlossenen Fälle oder
`FAILED_TO_ANALYZE`-Revisionen. Für andere Fehlergründe bleiben die jeweiligen
Retry- beziehungsweise Review-Verfahren maßgeblich.
Für einen Server ist die Vorlage `deploy/viano-bug-analysis-worker.service`
vorbereitet. Sie wird nicht automatisch installiert oder gestartet. Dienstbenutzer,
Pfade, Zugangsdaten und gemeinsame Workspace-Berechtigungen müssen zum Zielserver
@@ -0,0 +1,15 @@
# Explicit technical recovery for exhausted entity resolution
The authenticated case detail page now supports a reasoned approval for one additional response attempt after a software correction. Scope is currently `BLOCKED / ENTITY_RESOLUTION_INVALID_RESPONSES` during interpretation, covering plan and assessment. Other technical scheduling failures retain their existing retry paths; human feedback, completed results, final review and investigation-budget limits cannot be bypassed by this action.
Approval is durable intent, not a model call. The worker holds its regular case lock, rechecks generation and project configuration binding, verifies exhaustion and appends a manual-resume checkpoint. Actor, reason, rejected-call hash, implementation hash, stage and next attempt number are recorded. Previous attempts, revision, captures and accepted plan are retained. The entity resolver verifies these grants on replay and extends only that stage's attempt range, by one per explicit grant. A rejected extra attempt blocks again. Grants are not automatic and repeated same-generation web submissions are deduplicated or rejected as stale.
Validation on 2026-10-24, no paid model calls:
- 99 passed across operator repair, worker, entity resolution, lifecycle checkpoints and manual packaging tests.
- 25 passed in the dashboard/operator repair test invocation (includes tests overlapping the previous invocation).
- Node syntax check and real Edge browser smoke passed, including rendering and dispatch arguments of the repair control; no console errors.
- Manual package --check passed after rebuilding the bundled user manual.
- An unchanged copy of the operator-supplied BUG-000021 revision-2 ZIP was admitted into a temporary workspace and explicitly approved. It transitioned to INTERPRETING_CASE in the same revision without a model call. Original file and VPS data were not modified. The stale source generation was correctly rejected first, then the current imported generation was used.
Tests cover one-attempt exhaustion, second explicit grant, plan/capture reuse for assessment recovery, original-byte preservation, portable replay without another model call, CSRF, machine-client rejection, stale generation, invalid reason, queue deduplication and rejection of unrelated block reasons. Native Linux field verification remains pending deployment. No architecture specification was changed.