Promote develop → main (2026-07-25 13:03 UTC) #52
In neuem Issue referenzieren
Einen Benutzer sperren
Branch "develop" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
Automatischer Promote-Trigger via AegisSight Promote-UI. Commits: 8
Backend fuer die modularen Studio-Pipeline-Bausteine, alles ueber Claude. DB (additiv, idempotent): - Tabellen incident_events + fact_check_runs (+ Indizes) - Funktion log_incident_event() - Spalten incidents.summary_at, incidents.executive_summary, articles.geoparsed_at agents/stage_runners.py (neu): isolierte Bausteine analyze + factcheck auf dem vorhandenen Bestand, komplett neu, Historie bleibt (Snapshot/fact_check_runs). orchestrator.py: collect_only in die Lane-Multi-Tenant-Queue eingebaut (enqueue_refresh 4-Tupel, _worker-Entpacken, Multi-Pass-Gate, _run_refresh-Signatur + Analyse/FC-Skip). Zusaetzlich summary_at beim Schreiben des Lagebilds gestempelt (Studio-Freshness). incidents.py: Endpunkte POST /{id}/run/{stage} (collect|analyze|factcheck), GET /{id}/run-status, GET /{id}/freshness, GET /{id}/factcheck-runs[/{run_id}]. Busy-Check auf Online-Orchestrator (_current_tasks), Tenant-Zugriffspruefung. Kein lokaler LLM-Unterbau, kein lokales Modell. /ask + /events folgen in Phase 3. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>Fall-Chat und Ereignis-Timeline, alles ueber Claude, strikt fallorientiert. incidents.py: - GET /{id}/events: Aktivitaets-Timeline (article_ingest/refresh/analysis/chat_qa/source_change) - POST /{id}/ask: Fall-Chat/RAG mit Guardrails: * tools=None (kein Netz/kein Werkzeug) = zentrale Anti-Exfil-Abwehr (GitLost) * nur Materialien DIESES Falls (scope=alle entfaellt), [n]-Zitate, strikt aus Materialien * Claude-Vorauswahl der relevanten Artikel statt lokalem Embedding (kein lokales Modell) * _escape_prompt_content + Ausgabe-Leak-Filter + EchoLeak-Haertung (externe Bilder/Links/URLs raus) * Verbotsliste: kein Backend/App/Modell/Anbieter, kein Fremd-Fall * chat_qa in incident_events protokolliert - Recherche-Angebot: liefert die Materialien die Frage nicht, haengt der Analyst einen needs_research-Block an (focus + description_addition, NUR aus der Frage abgeleitet). - POST /{id}/clarify (nur auf Nutzer-Bestaetigung): Beschreibung ergaenzen + fokussierte Folge-Recherche AUSSCHLIESSLICH zur Frage (Researcher title=focus/description=frage), url-dedupliziert in den Fall. Laeuft als Hintergrund-Job (stage_runners.start_job). stage_runners.py: generischer start_job() fuer Hintergrund-Jobs (run-status-sichtbar). api.js: clarify(). studio.js + studio.css: Angebot rendern, bestaetigen, run-status pollen. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>