Die Wahl war keine Startaktion, sondern eine Einstellung, die nebenbei einen
Lauf auslöste. Damit stand sie neben zwei echten Alternativen und beantwortete
eine andere Frage als die gestellte.
Das Intervall samt Startzeit steht im Reiter Einstellungen des Falls, dort
gehört es hin und dort lässt es sich auch wieder ändern. Im Startdialog
bleiben zwei Alternativen, die sich wirklich ausschließen. Den Fall aus dem
Netz aufbauen oder mit eigenem Material beginnen.
Fünf Prüfungen halten das fest, darunter der Nachweis, dass die automatische
Aktualisierung im Einstellungen-Reiter erreichbar bleibt.
Cache-Buster auf 20260802d.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Nachtrag aus der Endkontrolle nach dem Umbau der Bausteinspalte. Ein
getElementById auf ein entferntes Element scheitert still, genau das wäre
beim Entfernen der Artefakt-Karten leicht passiert. Die Strukturprüfung
gleicht jetzt jede gesuchte ID gegen das Dokument ab, inklusive der zur
Laufzeit erzeugten.
Für studio.js sind alle 109 Zugriffe sauber. In app.js sind fünf Verweise
ins Leere aufgefallen, alle aus der Domain-Sperrliste im Quellen-Modal und
alle hinter einer Existenzprüfung, showBlockDomainDialog kehrt bei fehlendem
Formular sofort zurück. Kein Absturzrisiko, aber toter Code. Sie stehen als
bekannte Altlast in der Prüfung, werden gemeldet und zählen nicht als
Fehler. Ein neuer Fall fällt weiterhin auf.
Dazu ein Kommentar am Label der Netzwerkanalyse, das ohne zugehörige Karte
stehen bleibt, damit später niemand rätselt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Nachtrag zu ffbdd51. _renderLauf lief nur über _stagesIdle, und das wiederum
nur beim Laden eines Falls. Schloss man den Fall oder öffnete das Studio ohne
Fall, blieb der Stand-Kasten mit den Angaben des zuletzt geöffneten Falls
stehen, beim allerersten Aufruf war er leer.
Zwei Absicherungen. Der Leerzustand setzt Fall und Frischedaten zurück und
zeichnet die Spalte einmal neu, und das Dokument bringt den Ausgangstext
bereits mit.
Sechs Prüfungen dafür.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Die Bausteinspalte mischte vier Dinge in einem Kartenlayout. Ergebnisse zum
Anschauen, Erzeuger zum Starten, ein Artefakt ohne Erzeuger und reine
Aktionen. In jeder Karte lagen Öffnen und Neurechnen wenige Pixel
auseinander, beide mit demselben Kreispfeil-Symbol. Dazu kamen sechs Stellen,
an denen ein Lauf beginnen konnte, verteilt über zwei Spalten.
Jetzt drei getrennte Bereiche. Oben wird gearbeitet, in der Mitte werden
Ergebnisse angesehen, unten stehen die Fall-Aktionen.
Gearbeitet wird über genau einen Knopf, dessen Beschriftung sich am Zustand
ausrichtet. Beim leeren Fall Lauf starten, bei einer Recherche Recherche
starten, bei veralteten Ergebnissen Jetzt aktualisieren, sonst Erneut
durchlaufen, während eines abbrechbaren Laufs Abbrechen. Darüber steht, was
gerade zu tun ist, etwa die Zahl der neuen Artikel seit dem letzten Bericht.
Darunter die vier Schritte als Kette mit Zustand. Sie starten nichts,
Aufklappen erklärt nur, was ein Schritt tut. Damit fällt auch eine
Kostenfalle weg. Ein einzeln gestartetes Sammeln buchte denselben Satz wie
der komplette Lauf, wer danach Lagebild und Faktencheck einzeln nachzog,
zahlte 69 statt 45 Credits, ohne dass die Oberfläche darauf hinwies.
Benannt wird ab jetzt das Ergebnis statt des Erzeugers. Artikel holen,
Lagebild schreiben, Fakten prüfen, Orte erkennen. Bei Recherche-Lagen heißt
der zweite Schritt Recherchebericht schreiben. Die Wörter Baustein,
Geoparsing und Analyse verschwinden aus der Oberfläche.
Weiter entfernt sind die Karte Netzwerkanalyse, solange es den Baustein im
Server nicht gibt, der Sammeln-Knopf aus der Quellenspalte und die Wahl
Nur Quellen sammeln im Startdialog.
Der Server behält seine Schnittstelle für einzelne Bausteine. Die Anzeige
eines so gestarteten Laufs bleibt erhalten, er kann aus der klassischen
Ansicht kommen. Ein solcher Lauf wird beim Abbruch auch als der Schritt
abgebrochen, der wirklich läuft, nicht pauschal als kompletter Lauf.
51 tote CSS-Regeln entfernt. Prüfungen ohne Browser, 59 neue Fälle für die
Lauf-Anzeige plus 12 in der Strukturprüfung, die festhalten, dass es im
ganzen Dokument genau ein Element gibt, das einen Lauf starten kann.
Die Anzeige der Credits am Knopf kommt später, sie ist bewusst nicht Teil
dieser Änderung.
Cache-Buster auf 20260802c.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Das Studio konnte Fälle bisher nur anlegen, nicht bearbeiten. Es gab kein
Einstellungs-Panel, alle Felder waren nach dem Anlegen eingefroren. Wer etwas
ändern wollte, musste zurück in die klassische Ansicht. Für die geplante
Ablösung der klassischen Ansicht ist das der erste Blocker.
Neuer Reiter Einstellungen in der Fallnavigation, unter Export. Er führt alle
Felder des klassischen Bearbeiten-Modals: Titel, Beschreibung, die drei
Quellenschalter, Sichtbarkeit, KI-Verarbeitung, Aktualisierung mit Intervall
und Startzeit, Aufbewahrung und die drei E-Mail-Benachrichtigungen.
Gespeichert wird nur, was sich geändert hat. Zwei Gründe. Der Server
aktualisiert feldweise, unverändert zurückgereichte Werte würden trotzdem
geschrieben. Und eine unbeabsichtigte Änderung am Intervall kann einen
laufenden Zeitplan verstellen.
Die Wahl des KI-Wegs, also Anthropic gegen die EU-Fassung über Bedrock
Frankfurt, fehlte im Studio vollständig. Sie steht jetzt im Reiter und im
Anlege-Dialog, wortgleich zur klassischen Ansicht. Beim Umstellen erscheint
ein Hinweis, dass bereits erzeugte Inhalte auf dem bisherigen Weg entstanden
sind und die Änderung ab dem nächsten Lauf greift. Läuft gerade ein Schritt,
sagt der Reiter das ebenfalls.
Dazu die Kennzeichen EU und Anthropic in Fallliste und Kopfzeile. Sie
erscheinen nur, wenn der Fall ausdrücklich auf einen Weg gestellt ist. Ohne
Angabe gilt die Vorgabe der Organisation, dann bleibt es unbeschriftet.
Zwei Feinheiten. Das Intervall wird in der größten glatt aufgehenden Einheit
gezeigt, 1440 Minuten also als ein Tag. Und der X-Schalter bleibt bedienbar,
wenn der Fall X bereits nutzt, sonst ließe er sich nach dem Wegfall des
letzten Zugangs nicht mehr abschalten.
Prüfungen ohne Browser und ohne Netzzugriff. 57 Fälle für den Reiter, dazu 29
für die Struktur beider Oberflächen, die prüfen, dass jedes onclick auf eine
vorhandene Methode zeigt, dass keine ID doppelt vergeben ist und dass jedes
Design-Token ohne Fallback auch definiert ist.
Cache-Buster auf 20260802b.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Im Studio lassen sich mehrere Faelle auf einmal archivieren oder loeschen, in
der klassischen Ansicht ging das nur einzeln ueber die Aktionsleiste. Wer dort
zehn alte Lagen wegraeumen wollte, musste jede einzeln oeffnen.
Die Seitenleiste bekommt deshalb dieselbe Bedienung wie das Studio. Unten
stehen zwei Knoepfe, Archivieren und Loeschen. Der erste Klick schaltet den
Auswahlmodus ein, erst dann erscheinen Haken in der Lagenliste, an Stelle des
Statuspunktes. Ein Klick auf eine Zeile waehlt dann aus, statt die Lage zu
oeffnen. Bestaetigt wird in der Leiste darunter, die mitzaehlt und nur
anbietet, was zur Auswahl passt. Sind nur aktive Lagen gewaehlt, erscheint
kein Aktivieren-Knopf, im Loeschmodus keiner der beiden anderen.
"Alle sichtbaren" beruecksichtigt den Filter der Seitenleiste, waehlt also bei
aktivem Eigene-Filter nur die eigenen Lagen aus. Das Loeschen fragt vorher nach
und nennt Titel und Artikelzahl, weil es nicht rueckgaengig zu machen ist. Die
Aktionen laufen nacheinander ueber die normalen Endpunkte, damit deren
Rechtepruefung greift, und Fehlschlaege werden mit Nummer gemeldet statt still
verschluckt. War die offene Lage dabei, springt die Ansicht zurueck.
Dazu Lucide-Icons fuer Archivieren, Aktivieren, Loeschen und Abbrechen, in
beiden Ansichten. Im Studio setzte _renderBulkBar die Beschriftung bisher ueber
textContent des Knopfes, was das Icon bei jedem Neuzeichnen entfernt haette.
Die Beschriftung liegt jetzt in einer eigenen span.
Cache-Buster auf 20260802a, sonst laden Browser die alten Skripte weiter.
Neu sind 34 Pruefungen, sie laufen ohne Browser gegen ein DOM-Double.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Portierung aus dem Lokal-Fork (AegisSight-Monitor-Local, Commit 9613610).
Vier Angleichungen an das klassische Dashboard.
1. "Klassische Ansicht" ist jetzt derselbe Knopf wie "Studio-Ansicht" im
Dashboard, mit Symbol, an erster Stelle im rechten Kopfzeilen-Block.
2. Oben rechts fehlten Barrierefreiheit, Konto-Menü und Abmelden. Der
A11yManager liegt jetzt in js/a11y.js und wird von beiden Oberflächen
eingebunden, denn das Studio lädt app.js nicht. Konto-Menü (Organisation,
Lizenz, Credits, Über KI-Inhalte) und Abmelden nachgezogen, der
Theme-Schalter ist derselbe Schiebeschalter wie im Dashboard.
3. Die Fall-Liste hat jetzt die Umschaltung "Alle" / "Eigene" in der
Knopf-Optik der klassischen Seitenleiste, der Reiter-Zähler zieht mit.
4. Der Hinweis "Wähle links einen Fall aus" endet vor der Bausteine-Spalte
statt am Fensterrand, im gestapelten Layout nimmt er die volle Breite.
Das info@-Gating des Studios bleibt unverändert bestehen.
Versionsmarker der angefassten Dateien auf 20260725a angehoben.
Co-Authored-By: Claude Fable 5 <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>