# Validierung Queue/Lifecycle Geprüfte Regressionen: - Mehrere `article.research.fetch.started/completed` mit derselben `research_id` ergeben genau einen Research-Lauf. - Wiederholte Root-Start-Events derselben Run-ID duplizieren `activeOrder` nicht. - `research.ingested` beendet einen neuen Relationslauf nicht vor dem expliziten `research.completed`. - Alte Relationsläufe mit `research.results`, aber ohne Terminal bleiben nach der Grace-Period nicht dauerhaft `running`. - Der gemeinsame Work-Limiter zählt Active/Waiting separat nach Operationstyp und Release ist idempotent. - Ein zweiter Ollama-Request, der auf einen belegten Node wartet, verbraucht keinen gemeinsamen Work-Slot; ein SearXNG-Slot bleibt verfügbar. - Eine ältere, langsamere SearXNG-Anfrage kann den Diagnosestatus einer neueren bereits abgeschlossenen Anfrage nicht überschreiben. - Ein Paralleltest mit 16 gleichzeitigen `EnqueueResearchTask`-Aufrufen für denselben `dedupe_key` erwartet exakt eine neu angelegte Aufgabe (Test ist für den echten SQLite-Treiber enthalten; lokal konnte er wegen des Compile-only-Stubs nicht ausgeführt werden). - `node --check internal/web/static/analysis.js` erfolgreich. Die Projektdatei verlangt Go 1.26, während die Validierungsumgebung Go 1.23 ohne externen Modulzugriff bereitstellt. Die projektweite Typkompilierung und `go vet ./...` wurden daher in einer temporären Kopie mit `go 1.23` und einem lokalen compile-only Stub für `modernc.org/sqlite` ausgeführt. Der ausgelieferte Baum behält `go 1.26` und `modernc.org/sqlite v1.37.1` unverändert.