bd35e25121e29e0fa96b2b55ed67445fd1bfaddb
19 Commits
| Autor | SHA1 | Nachricht | Datum | |
|---|---|---|---|---|
|
|
bd35e25121 |
test(studio): Zugriffe auf nicht vorhandene Elemente werden geprüft
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> |
||
|
|
f8d32b1d18 |
fix(studio): Lauf-Anzeige ohne geöffneten Fall zurücksetzen
Nachtrag zu
|
||
|
|
ffbdd5170c |
refactor(studio): ein Startpunkt statt sechs, Schritte werden zur Anzeige
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> |
||
|
|
4ba66cb510 |
feat(studio): Einstellungen-Reiter je Fall, KI-Weg wählbar und sichtbar
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> |
||
|
|
c09c2a49b9 |
feat(ui): Sammelaktionen auch in der klassischen Ansicht, mit Lucide-Icons
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> |
||
|
|
e440ef93d1 |
fix(faktencheck): Zahl der Faktenaussagen richtet sich nach dem Material
In allen Auftraegen stand fest "5-10 wichtigste Faktenaussagen", bei der Aktualisierung "3-5 neue". Die Zahl hatte damit nichts mit der Menge des Materials zu tun. Aus 16 Meldungen wurden genauso viele Fakten wie aus 91. Beide Wege lasen dieselbe Vorgabe verschieden. Der Weg ueber die Anthropic-CLI behandelte sie als Richtwert und lag zwischen 9 und 21 Fakten, ueberschritt die Zehn also regelmaessig. Das Modell auf dem EU-Weg las sie als Zielvorgabe und traf sie in neun von siebzehn Laeufen exakt. Daher wirkten die EU-Berichte so gleichfoermig, nicht die Lage bestimmte den Umfang, sondern die Zahl im Text. Bei der Ceuta-Lage bedeutete das, dass zehn Punkte eine europaweite Krise abbilden mussten, in der Opferzahlen, die schwimmende Barriere, das Sondertreffen der Innenminister, Italiens Schengen-Aussetzung, der offene Brief von 22 Staaten, die Rueckfuehrungen und mehrere Regierungsaeusserungen vorkamen. faktenspanne() berechnet den Richtwert jetzt aus der Zahl der Meldungen, grob eine Aussage je fuenf Meldungen, begrenzt auf 5 bis 20 bei der Erstpruefung und 3 bis 10 bei der Aktualisierung. 16 Meldungen ergeben weiterhin 5 bis 10, 88 Meldungen ergeben 9 bis 18. Alle Werte sind ueber Umgebungsvariablen einstellbar. Dazu die Formulierung. Die Spanne ist jetzt ausdruecklich als Richtwert und nicht als Zielvorgabe bezeichnet, mit der Erlaubnis, weniger zu nennen wenn das Material nicht mehr hergibt, und mehr wenn sonst wichtige Punkte fehlen wuerden. Betroffen sind die vier Faktencheck-Vorlagen und die Triage. Neu sind 25 Pruefungen, insgesamt laufen 279 ohne Netzzugriff und ohne Kosten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
b00076d320 |
fix(eu): Belastungsprobe folgt auch auf eine erfolgreiche Nachbelegung
Der erste Lauf mit den Gegenproben (Lage 64) zeigte, dass der Faktencheck selbst jetzt ehrlich arbeitet. Der erste Durchgang liess 3 von 10 Behauptungen offen, also 30 Prozent und damit genau das Niveau des Anthropic-Wegs. Vorher waren es acht Laeufe hintereinander null. Danach hob die Nachhak-Runde alle drei wieder auf bestaetigt, und der Lauf endete erneut ohne eine einzige Unsicherheit. Ursache war ein Denkfehler im Aufbau. Die zweite Runde war ein Entweder-oder. Entweder wurde nachbelegt oder es lief die Belastungsprobe. Sobald nachbelegt wurde, stand am Ende wieder alles auf bestaetigt und niemand prueft das nach. Jetzt laufen beide Schritte nacheinander. Erst wird nachbelegt, danach greift die Belastungsprobe, wenn kaum noch etwas offen ist. Sie prueft damit genau die frisch vergebenen Bestaetigungen. Damit sie wirklich neu sucht, meldet die Nachhak-Runde ihre Anfragen zurueck und die Belastungsprobe meidet auch diese. Der Weg ueber die Anthropic-CLI bleibt unveraendert. 254 Pruefungen laufen ohne Netzzugriff und ohne Kosten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
d948e3a7f4 |
feat(eu): Faktencheck weist Unsicherheit aus statt alles zu bestaetigen
Der EU-Faktencheck bestaetigte praktisch jede Behauptung. Ueber alle Laeufe seit Lage 42 lag der Anteil offener Punkte bei 6 Prozent, beim Weg ueber die Anthropic-CLI bei 31 Prozent. In acht aufeinanderfolgenden Laeufen zur Ceuta-Lage war er exakt null, achtmal zehn Behauptungen, zehnmal bestaetigt. Bei derselben Lage bewerteten beide Wege dieselben Aussagen verschieden. Der Anthropic-Weg stufte "22 EU-Laender kritisieren Spanien" mit sechs Quellen als unbestaetigt ein, der EU-Weg dieselbe Aussage mit vier Quellen als bestaetigt. Mehr Quellen und trotzdem vorsichtiger, das ist kein Zufall, sondern Bauart. Drei Ursachen, drei Aenderungen. 1. Die Belegsuche kannte nur Bestaetigung. Alle Anfragen waren stuetzend formuliert, wer so sucht findet auch nur Stuetzendes. Ein Anteil der Anfragen (EU_VERIFY_COUNTER_SHARE, Vorgabe 0.3) ist jetzt eine Gegenprobe und sucht gezielt nach Dementi, Richtigstellung, abweichenden Angaben und der Darstellung der Gegenseite. Die Treffer sind im Kontext als [GEGENPROBE] gekennzeichnet. 2. Das Modell konnte Belege nicht wirklich pruefen. Die Belegsuche lief mit abgeschaltetem Volltext, das Modell sah je Treffer nur Ueberschrift und Auszug. Ein Artikel zum Thema wurde damit zum Beleg fuer eine konkrete Zahl. Bis zu EU_VERIFY_FULLTEXT_QUERIES Anfragen holen jetzt den Artikeltext. Dazu die Ansage, dass ein Treffer, der nur das Thema erwaehnt, kein Beleg ist, und dass eine Angabe, die praeziser ist als ihre Quelle, nicht traegt. 3. Die zweite Runde lief nur in eine Richtung. Sie belegte offene Punkte nach, und wenn nichts offen war, lief sie gar nicht. Ausgerechnet der Fall "alles bestaetigt" blieb ungeprueft. Jetzt folgt dort eine Belastungsprobe. Sie sucht ausschliesslich Gegenproben zu den staerksten Behauptungen und darf Bestaetigungen zuruecknehmen, aber niemals vergeben. Zurueckgestuft wird bei Widerspruch, bei Dementi, wenn die Belege die konkrete Angabe gar nicht nennen, wenn die Behauptung praeziser ist als ihre Quellen, oder wenn nur eine einzige Stelle berichtet. Ausserdem darf die Nachhak-Runde einen Status jetzt auch absenken, wenn die Nachrecherche der Behauptung widerspricht. Dabei fiel ein Robustheitsmangel auf. Scheiterte die zweite Runde, etwa weil die Suche nicht erreichbar war, ging der gesamte Faktencheck verloren statt nur die Zusatzpruefung. Die zweite Runde ist jetzt gekapselt, das Ergebnis des ersten Durchgangs bleibt in jedem Fall erhalten. Der Weg ueber die Anthropic-CLI bleibt unveraendert. Neu sind 26 Pruefungen, insgesamt laufen 250 ohne Netzzugriff und ohne Kosten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
5a75f0fb15 |
fix(faktencheck): keine Wertung in der Behauptung, Korrekturen als Verlauf
Drei Befunde aus dem Bericht zu Lage 60 vom 02.08.2026, alle in der Semantik von Faktencheck und Lagebild. 1. Eine Behauptung trug eine Wertung, die das eigene Lagebild widerlegt. Im Faktencheck stand bestaetigt, die Migranten haetten Ceuta "freiwillig" verlassen. Drei Zeilen darueber berichtet dasselbe Dokument, dass die Behoerden zur Umkehr aufforderten, mit Abschiebung drohten und Soldaten verbliebene Personen zusammentrieben. Wertende Zusaetze gehoeren jetzt nur in die Behauptung, wenn genau dieser Zusatz belegt ist. 2. Eine korrigierte Zahl stand als Spanne. "Mindestens 57 bis 67 Tote" praesentiert einen ersetzten und einen aktuellen Stand als gleichwertige Bandbreite. Der Bericht vom Vortag hatte denselben Sachverhalt noch als Verlauf aufgeloest, was methodisch richtig ist. Korrigierte Werte werden jetzt als Zeitreihe dargestellt; eine Spanne bleibt der Fall, in dem verschiedene Stellen gleichzeitig verschiedene Werte erheben, dann mit Zuordnung. Die Regel steht auch in den drei Analyse-Vorlagen und in der Kachel Neueste Entwicklungen, weil die Formulierung dort entsteht. 3. Der Faktencheck bestaetigte zehn von zehn Behauptungen. Ein Raster, das nie zu einem anderen Ergebnis kommt, transportiert keine Pruefinformation. Der Auftrag verlangt jetzt, auch strittige, schwach belegte oder unterschiedlich dargestellte Aussagen aufzunehmen, ohne dazu etwas zu erfinden. Neu sind 4 Pruefungen, insgesamt laufen 224 ohne Netzzugriff und ohne Kosten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
695983245d |
fix(bericht): keine Doppelverweise und keine Platzhalter im Quellenverzeichnis
Zwei Befunde aus dem Bericht zu Lage 60 vom 02.08.2026.
1. Doppelte Verweise, ein Folgefehler des Dubletten-Zusammenfuehrens. Zeigten
zwei Nummern auf dieselbe Adresse, wurden beide Verweise auf dieselbe neue
Nummer umgeschrieben und standen dann nebeneinander: "[24][24]". Im Bericht
kam das dreimal vor, in der gespeicherten Fassung nicht. Aufeinanderfolgende
Verweise auf dieselbe Nummer werden jetzt zusammengezogen.
2. Platzhalter ohne Adresse. Das Modell hatte einen Eintrag {"nr": 12, "name":
"Quelle", "url": ""} erzeugt. Der Bericht druckte ihn als "12 Quelle" ohne
Adresse und die Statistik fuehrte ein Medium namens "Quelle". Ein Eintrag
ohne Adresse ist kein pruefbarer Beleg und kommt nicht mehr ins
Verzeichnis; der Verweis darauf wird wie ein verwaister behandelt und
entfernt.
Gegenprobe an Lage 60: aus 30 Eintraegen werden 26 (drei doppelte Adressen
zusammengefuehrt, ein Platzhalter entfernt), die Zaehlung bleibt lueckenlos,
kein doppelter Verweis mehr im Text.
Neu sind 4 Pruefungen, insgesamt laufen 220 ohne Netzzugriff und ohne Kosten.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
|
|
e2638ce9d5 |
fix(eu): Vertiefungsrunde der Recherche faellt nicht mehr aus
Die Suchphase endete in jedem beobachteten Lauf mit "Treffer-Obergrenze 60
erreicht" nach Runde 2. Die ersten beiden Runden erfassen breit und fuellten
den Korb, die dritte Runde, die gezielt Luecken schliessen soll, lief damit
nie. Genau diese Runde bringt aber das, was in den Berichten fehlte: die
Position des eigenen Landes, die Reaktion der Institutionen, den rechtlichen
Rahmen.
Der harte Gesamtstopp war eine Ueberkorrektur. Er kam aus einem frueheren Fix
gegen Leerrunden: War der Korb voll, befragte die Schleife weiter das teuerste
Modell, ohne noch etwas aufnehmen zu koennen. Das Problem war aber nicht die
Rundenzahl, sondern dass spaete Runden keinen Platz mehr hatten.
Jetzt drei Aenderungen:
1. Kontingent je Runde (EU_RESEARCH_MAX_NEW_PER_ROUND, Vorgabe 25). Die frueher
Runden koennen den Korb nicht mehr allein fuellen, fuer die spaeteren bleibt
Platz frei.
2. Verdraengung statt Abbruch. Ist der Korb voll und eine spaetere, gezieltere
Runde bringt einen Treffer, weicht der schwaechste Treffer einer frueheren
Runde: ohne Volltext, ohne Textauszug, aus der fruehesten Runde. Treffer mit
Volltext werden nie verdraengt.
3. Abbruch nur noch bei echter Saettigung. Bringt eine ganze Runde keinen
einzigen neuen Treffer, ist das Thema ausgeschoepft und die Schleife endet.
Der Kostenschutz des frueheren Fixes bleibt damit erhalten, ohne die
Vertiefung zu verhindern.
Dazu bekommt die dritte Adhoc-Runde einen eigenen Auftrag. Bisher wiederholte
sie den Text der zweiten ("Luecken schliessen und vertiefen"), jetzt fragt sie
ausdruecklich nach der fehlenden Seite der Lage und verbietet die Wiederholung
des Hauptereignisses.
Neu sind 10 Pruefungen, darunter der Regressionsschutz gegen Leerrunden in
neuer Form. Insgesamt laufen 216 ohne Netzzugriff und ohne Kosten.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
|
|
9868a9748a |
fix(recherche): Suchbegriffe treffen wieder, Verzeichnis ohne Dubletten
Vier Befunde aus dem Vergleich vom 02.08.2026, sortiert nach Wirkung.
1. Mehrwort-Suchbegriffe fielen im RSS-Abgleich durch. Dieselbe Lage lieferte
je nach Titel 79 oder 17 Treffer. Die Keyword-Erzeugung liefert bei
politisch formulierten Titeln Phrasen ("migrationskrise spanien",
"aufnahmeverfahren eu"), das Matching verglich sie als starre Zeichenfolge.
Die Schlagzeile "Migrationskrise in Spanien" enthaelt "migrationskrise
spanien" nicht, wegen des Wortes dazwischen. Aus 53 Artikeln wurden so 16.
Eine Phrase trifft jetzt, wenn alle ihre Bestandteile im Text vorkommen,
unabhaengig von Reihenfolge und Abstand. Die Genauigkeit bleibt erhalten,
nur die starre Reihenfolge faellt weg.
Dazu der Auftrag an die Keyword-Erzeugung: Einzelwoerter statt Phrasen, und
die harten Eigennamen der Lage sind Pflicht. Bei den betroffenen Laeufen
fehlte "ceuta" komplett, dafuer stand "europol migration" in der Liste, was
den Europol-Feed anzog und sieben themenfremde Pressemitteilungen
einbrachte, die der Topic-Filter danach wieder aussortieren musste.
2. Dubletten im Quellenverzeichnis. Lage 56 fuehrte 30 Eintraege fuer 28
Adressen, zweimal dieselbe tagesschau-Meldung unter je zwei Nummern.
Ausgerechnet die strittigste Behauptung, der offene Brief der 22 Staaten,
stuetzte sich damit auf "3 Quellen", von denen zwei derselbe Artikel waren.
Gleiche Adresse heisst jetzt ein Eintrag, Verweise auf die entfernte Nummer
werden auf den behaltenen umgebogen. Verglichen wird ohne Schema, www und
Endschraegstrich.
3. Die Zeitleiste wird deterministisch sortiert. Im selben Bericht sprang der
letzte Eintrag von 12:44 zurueck auf 17:47. Der Auftrag verlangt die
Sortierung zwar vom Modell, im prominentesten Kapitel darf sie aber nicht
von dessen Sorgfalt abhaengen. Gegenprobe an Lage 56: 23:23, 22:09, 17:47,
16:58 statt des Sprungs ans Ende.
4. Weiterleitungen zaehlen als ein Beleg. Sie verbergen ihr Zielmedium, also
laesst sich nicht behaupten, dass dahinter verschiedene Redaktionen stehen.
Die bisherige Einzelzaehlung stellte den Anthropic-Weg rechnerisch besser:
in Lage 57 standen 10 ausgewiesene Belege fuer 7 Haeuser, weil vier der elf
Adressen news.google.com-Weiterleitungen waren.
Gegenprobe an beiden gespeicherten Laeufen: Lage 56 zeigt 28 statt 30
Verzeichniseintraege, beide Berichte zaehlen lueckenlos, die Zeitleiste ist
sortiert.
Neu sind 26 Pruefungen, insgesamt laufen 206 ohne Netzzugriff und ohne Kosten.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
|
|
0154c0f575 |
fix(eu): Kapazitaetsengpaesse bei Bedrock aussitzen statt Schritte verlieren
Am 01.08.2026 lieferte Bedrock waehrend eines Laufs ServiceUnavailableException. Botocore versuchte es dreimal in fuenf Sekunden und gab auf, die Web-Source-Selektion fiel ersatzlos aus. Im Bericht war davon nichts zu sehen, der Lauf galt als vollstaendig. Gemessen sind es zwei betroffene Aufrufe bei rund 340, also 0,6 Prozent, aber jeder Vorfall kostet einen ganzen Pipeline-Schritt. Der Fehler ist auch keiner unserer Quote. ServiceUnavailableException ist ein 503, AWS hat also gerade keine Kapazitaet fuer das Modell. Unsere Meldung sagte trotzdem "Rate-Limit", weil der Code beide Faelle in einen Topf warf. Aendert sich damit: 1. Geduldiges Wiederholen. Kapazitaets- (503), Kontingent- (429) und Verbindungsfehler werden nach 5, 15 und 30 Sekunden erneut versucht. Diese Dellen dauern typischerweise unter einer Minute, unsere bisherigen fuenf Sekunden lagen genau im ungeguenstigsten Fenster. Stufen ueber BEDROCK_RETRY_WAITS einstellbar. 2. Zwei Bremsen gegen lange Laeufe. Gewartet wird nur, wenn die Wartezeit ins Zeitbudget des Aufrufs passt (die Wartezeit zaehlt gegen dasselbe asyncio-Budget, und die Haiku-Planungsaufrufe haben nur 120 Sekunden), und nur solange das Wartebudget des Refreshs reicht (BEDROCK_RETRY_BUDGET_S, Vorgabe 120 Sekunden). Ein Lauf kann sich dadurch um hoechstens zwei Minuten verlaengern. 3. Ursachen werden getrennt benannt. Im Log steht jetzt "hat keine freie Kapazitaet" oder "meldet ausgeschoepftes Kontingent" statt pauschal "Rate-Limit". Nach aussen bleibt beides die Kategorie rate_limit, damit die Retry-Steuerung des Orchestrators unveraendert greift. 4. Stoerungen werden sichtbar. Waehrend einer Wartezeit meldet die Oberflaeche "KI-Dienst hat keine freie Kapazitaet, neuer Versuch in 15 Sekunden", sonst sieht die stehende Anzeige wie ein Haenger aus. Nach dem Lauf steht eine Zusammenfassung im Refresh-Protokoll, auch wenn der Lauf sonst glatt durchlief. 5. botocore laeuft im Modus 'adaptive' statt 'standard'. Es bremst sich bei Drosselung selbst ein und deckt die Sekunden ab, unsere Schleife die Zehnersekunden. Zeitliche Wirkung, gemessen am EU-Lauf der Ceuta-Lage (252 Sekunden, 15 Bedrock-Aufrufe): im stoerungsfreien Fall null, im betroffenen Lauf rund eine Minute mehr. Bei 0,6 Prozent Fehlerrate je Aufruf trifft das etwa jeden elften Lauf, im Mittel ueber alle Laeufe rund zwei Prozent. Gegenprobe mit einem echten Bedrock-Aufruf ueber den geaenderten Pfad: Antwort, Verbrauch und Kosten unveraendert, keine Stoerung protokolliert. Neu sind 23 Pruefungen, insgesamt laufen 179 ohne Netzzugriff und ohne Kosten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
3495409377 |
fix(faktencheck): Belegtiefe zaehlt Medienhaeuser, Widerspruch ist keine Widerlegung
Block 2 der Auswertung des Ceuta-Vergleichs vom 01.08.2026. Der Faktencheck der
EU-Fassung zeigte dort drei Fehler, die alle dieselbe Wurzel haben: Der Status
behauptete eine Belegtiefe, die niemand nachgerechnet hat.
1. Die Zaehlung war kaputt. Das Muster fuer die Quellenzaehlung war
r'https?://' ohne den Rest der Adresse, findall lieferte also eine Liste aus
"https://"-Bruchstuecken und len(set(...)) ergab immer 1 oder 2. Daher stand
im Bericht eine Behauptung als BESTAETIGT mit 1 Quelle, obwohl vier Haeuser
in der Evidenz standen, und der gesamte Faktencheck der Anthropic-Fassung
wies durchgehend 1 bis 2 Quellen aus. Die Adresse wird jetzt vollstaendig
erfasst.
2. Gezaehlt wird nach Medienhaus, nicht nach Fundstelle. Sechs France24-Treffer,
davon vier Videofassungen derselben Meldung, sind ein Haus. Grundlage ist die
registrierbare Domain aus services/media_registry.py. Weiterleitungsportale
bekommen keine gemeinsame Identitaet, hinter news.google.com koennen
beliebige Zeitungen stecken. Nachgerechnet an Lage 53 sinken die Angaben von
9 auf 6, von 8 auf 4 und von 7 auf 5 Belege.
3. Neue Nachbedingung. pruefe_belegtiefe stuft jeden Fakt ab, dessen Status mehr
behauptet als vorliegt: confirmed braucht zwei, established drei unabhaengige
Haeuser. Ein Primaerbeleg (Originalzitat im Interview, amtliche Mitteilung,
Urteil) traegt allein, dafuer liefert das Modell jetzt "evidence_type". Damit
verschwindet auch die Unterkonfidenz der Gegenprobe, in der ein ZDF-Interview
als unbestaetigt galt, obwohl der Kritisierte dort selbst spricht.
4. Die Nachhak-Runde stuft "developing" nicht mehr hoch. Sie hatte die
Behauptung "Der Ausloeser ist weiterhin unklar" auf BESTAETIGT gesetzt, weil
developing in der Statusordnung die niedrigste Stufe ist. Eine Unklarheit
laesst sich nicht bestaetigen. Ausserdem rechnet die Runde die Belegzahl nach
dem Hochstufen neu und nimmt die Stufe zurueck, wenn die Belege sie nicht
decken.
5. Widerspruch und Widerlegung sind getrennt. "contradicted" meint laut Auftrag
Belege, die einander widersprechen, wurde aber als "Widerlegt" angezeigt. Im
Bericht stand deshalb die sachlich zutreffende Spanne von 50.000 bis 60.000
Grenzuebertritten als widerlegt, obwohl die Evidenz woertlich sagt "Die
Zahlen variieren je nach Quelle". Jetzt: contradicted = "Widersprüchlich",
der neue Status "false" = "Widerlegt" und setzt einen entkraeftenden Beleg
voraus. Angepasst in Bericht, Oberflaeche, beiden Sprachdateien, Farben und
Statusordnung.
6. Ein verbindlicher Regelblock haengt an jedem Faktencheck-Auftrag
(bewertungsregeln()): Unabhaengigkeit heisst verschiedene Medienhaeuser,
Agenturuebernahmen zaehlen einmal, unterschiedliche Zahlen verschiedener
Erhebungsstellen sind kein Widerspruch sondern eine Spanne mit Zuordnung,
und Aussagen ueber den Kenntnisstand ("Der Ausloeser ist unklar") sind keine
pruefbaren Behauptungen und gehoeren nicht in den Faktencheck.
Die Aenderungen wirken auf beide Modellwege. Die Fixtures in test_eu_factcheck
liefern jetzt Belege aus mehreren Haeusern, weil eine einzelne Quelle keine
Bestaetigung mehr traegt.
Nachgerechnet an beiden gespeicherten Laeufen: kein Fakt wird durch die neue
Nachbedingung abgestuft, die Belegzahlen werden aber durchgehend ehrlicher.
Neu sind 27 Pruefungen, insgesamt laufen 156 ohne Netzzugriff und ohne Kosten.
Offen: Die Oberflaechen-Aenderungen (components.js, app.js, style.css, i18n)
sind noch nicht in den Lokal-Fork portiert.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
|
|
f87d377082 |
fix(bericht): lueckenlose Quellennummern, Medienname statt Feed-Name
Nachtrag zum Quellenverzeichnis, aufgefallen am Export der EU-Lage 53 vom 01.08.2026. 1. Lueckenlose Zaehlung im Bericht. Das Modell nummeriert alle vorgelegten Meldungen durch, zitiert aber nur einen Teil. Das Verzeichnis sprang dadurch von 20 auf 22, 24, 26, was fachlich stimmt, beim Leser aber wie ein Fehler aussieht. Export und Text werden jetzt gemeinsam auf 1 bis n umgeschrieben. Die gespeicherten Nummern bleiben unangetastet, damit sie ueber Folge-Refreshes stabil bleiben. Verweise, fuer die es keinen Verzeichniseintrag gibt, werden dabei entfernt statt verschoben: nach einer Umnummerierung wuerden sie sonst auf einen fremden Eintrag zeigen. 2. Der kuratierte Medienname schlaegt den Feed-Namen. Bisher gewann der haeufigste gelieferte Name, und das war der Name des RSS-Feeds. Im Bericht stand deshalb "Guardian World", "NYT Top Stories", "BBC Europe" und "FT Europe". Jetzt: The Guardian, New York Times, BBC, Financial Times. 3. Weiterleitungsportale werden nicht mehr zusammengefasst. Die Gruppierung nach Domain warf in der Anthropic-Fassung vier Zeitungen zusammen, weil Deutschlandfunk, Kurier, SZ.de und tagesschau.de dort alle als news.google.com-Link vorliegen. Der Umweg wird jetzt in der Statistik offen ausgewiesen, statt die Medien zu verschmelzen. 4. Ein Quelleneintrag zerfaellt nicht mehr ueber die Seitengrenze. Nummer und Name standen am Fuss der einen, die Adresse am Kopf der naechsten Seite. Gegenprobe an beiden Laeufen des Ceuta-Vergleichs: Lage 53 zeigt 25 Quellen lueckenlos von 1 bis 25, Lage 52 22 von 1 bis 22, in beiden Faellen loest jeder Verweis im Text auf und kein Eintrag zerfaellt ueber eine Seite. Neu sind 11 Pruefungen, insgesamt laufen 129 ohne Netzzugriff und ohne Kosten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
58aec2edd5 |
fix(bericht): Quellenverzeichnis gibt die Nummern aus dem Lagebild wieder
Der Vergleich zweier Berichte zur selben Lage (Ceuta, 01.08.2026) zeigte in beiden Fassungen Textverweise, die im gedruckten Verzeichnis nicht auftauchten. Die EU-Fassung zitierte bis [28] bei 25 aufgefuehrten Quellen, die Anthropic-Fassung bis [29] bei 22. Ursache war nicht die Analyse. In der Datenbank passen Text und Liste in beiden Laeufen exakt zusammen, keine einzige Referenz ohne Eintrag. Das PDF-Template druckte jedoch die laufende Zeilennummer (loop.index) statt der Quellennummer aus dem Lagebild (src.nr). Sobald die Nummern Luecken haben, und das ist der Normalfall, weil nicht jede gesammelte Meldung zitiert wird, verschiebt sich ab der ersten Luecke jeder Beleg. Lage 53 hat die Nummern 1 bis 20, 22, 24, 26, 27, 28: gedruckt wurde 1 bis 25, aus Quelle 28 wurde Zeile 25. Behoben: 1. Das Verzeichnis druckt src.nr. Gegenprobe an den echten Daten beider Laeufe: vorher fehlten in Lage 53 die Verweise [22] bis [28], jetzt loest jede der 25 Referenzen auf, in Lage 52 alle 22. 2. Keine Kappung des Verzeichnisses mehr. Im Umfang "Bericht" wurde bei 30 Eintraegen abgeschnitten, hoehere Referenzen im Text waren damit grundsaetzlich unaufloesbar. 3. Die Word-Ausgabe bekommt ueberhaupt erst ein Quellenverzeichnis. Bisher verwies der Text dort auf [1], [2], ohne dass die Datei die Nummern irgendwo aufloeste. 4. Die Quellenstatistik bezieht sich jetzt auf dieselbe Grundmenge wie das Verzeichnis. Vorher zaehlte sie alle gesammelten Artikel (49) und stand damit neben einem Verzeichnis mit 25 Eintraegen, was wie eine Aufwertung der Quellenbasis wirkte. Die Summe der Spalte Belege entspricht jetzt der Zahl der Eintraege, ein Hinweis nennt zusaetzlich die insgesamt ausgewerteten Meldungen. 5. Ein Verlag wird unter einem Namen gefuehrt. Bisher trennte der Bericht "Guardian UK", "Guardian World" und "The Guardian" oder "tagesschau" und "tagesschau.de" in eigene Zeilen und blaehte damit die Vielfaltsstatistik auf. Die neue services/media_registry.py bestimmt die Identitaet ueber die registrierbare Domain und waehlt den haeufigsten Namen. Aus 20 Statistikzeilen der EU-Fassung werden so 11 echte Medien. Sie kennt ausserdem Weiterleitungsportale und liest die Sprache aus der Adresse, sodass english.elpais.com nicht mehr als DE gefuehrt wird. Neu sind 22 Pruefungen, insgesamt laufen 118 ohne Netzzugriff und ohne Kosten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
bf967216de |
fix(analyse): vollstaendigen Bericht nehmen, wenn das Modell sich selbst korrigiert
Der Recherchebericht der EU-Fassung enthielt seit zwei Laeufen nur noch den
Abschnitt ZUSAMMENFASSUNG, 1513 statt der ueblichen mehreren tausend Zeichen.
Die Abschnitte HINTERGRUND, AKTEURE, AKTUELLE LAGE, EINSCHAETZUNG und
QUELLENQUALITAET fehlten vollstaendig.
Ursache. Das Modell lieferte zuerst ein knappes JSON, bemerkte den Fehler
selbst ("Wait, I need to include the full briefing content in the summary
field. Let me redo this properly with all sections") und haengte danach eine
zweite, vollstaendige Fassung an. Unsere Auswertung nahm das erste Objekt und
verwarf alles danach. Der Bericht war also da, wir haben ihn weggeworfen.
Behoben. json_utils bekommt extract_json_objects und extract_json_arrays, die
alle vollstaendigen Bloecke einer Antwort liefern statt nur den ersten. Der
Analyzer waehlt daraus den Bericht mit dem laengsten summary, der Faktencheck
die Liste mit den meisten Fakten. Beide protokollieren, wenn mehrere Fassungen
auftauchen, damit der Fall sichtbar bleibt. Die bisherigen Einzelabfragen
extract_json_object und extract_json_array bleiben unveraendert, damit sich an
den uebrigen Aufrufstellen nichts aendert.
Gegenprobe an der echten Antwort aus Lauf 50. Vorher 1513 Zeichen mit einem
Abschnitt, jetzt 8189 Zeichen mit allen sechs.
Neu sind 16 Pruefungen, insgesamt laufen 96 ohne Netzzugriff und ohne Kosten.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
|
|
0f39154e39 |
fix(eu): drei Fehler beheben, die den Ertrag des Faktenchecks aufzehrten
Der Vergleichslauf zur Innenministerkonferenz (Lage 49) zeigte, dass der verbesserte Faktencheck zwar zehn Fakten lieferte, davon aber nur drei uebrig blieben. Die Ursachen lagen in drei nachgelagerten Stellen. 1. Quellenzuordnung stufte alle zehn Fakten herab. Durch den groesseren Belegblock stuetzt das Modell seine Fakten jetzt staerker auf die europaeische Suche als auf die gespeicherten Meldungen. Es zitiert dabei die Belegnummern statt vollstaendiger Adressen. Die Quellenzuordnung suchte daraufhin vergeblich nach passenden Meldungen und stufte jeden Fakt herab. Im Vergleich: Lauf 45 hatte null Herabstufungen, Lauf 44 eine, Lauf 49 zehn von zehn. Behoben an zwei Stellen. Die Belegsuche gibt die gefundenen Quellen jetzt einzeln zurueck, der Faktencheck reicht sie an die Zuordnung durch, und der Auftrag verlangt ausdruecklich die vollstaendige Adresse je Beleg. 2. Duplikatpruefung loeschte sieben von zehn Fakten. Das Clustering warf inhaltlich verschiedene Beschluesse in eine Gruppe, weil viele Behauptungen gleich beginnen. Es gab keinerlei Absicherung, bei kleinen Faktenmengen entschied das Modell sogar voellig allein. Zwei Sicherungen greifen jetzt. Eine Gruppe, die mehr als 40 Prozent aller Fakten umfasst, wird verworfen. Und jeder Loeschkandidat muss dem behaltenen Fakt auch rechnerisch aehnlich sein, Grenze 0,55 im selben Mass wie im Vorfilter. Beide Werte sind ueber Umgebungsvariablen einstellbar. 3. Leerrunden in der Recherche. War die Treffer-Obergrenze erreicht, brach nur die innere Schleife ab. Die Rundenschleife lief bis zum Ende weiter und befragte jedes Mal das teuerste Modell, ohne noch eine einzige Suche auszufuehren. Das kostete rund 0,17 USD je Durchgang, bei drei Durchgaengen etwa 0,50 USD pro Aktualisierung. Der Weg ueber die Anthropic-CLI bleibt unveraendert. Neu sind 16 Pruefungen, darunter der nachgebildete Fall aus Lage 49, insgesamt laufen jetzt 80 Pruefungen ohne Netzzugriff und ohne Kosten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
c4e19777f9 |
feat(eu): Faktencheck der EU-Fassung sucht breiter, gezielter und hakt nach
Der Faktencheck ueber Bedrock und staan lieferte spuerbar weniger belegte Fakten als der bisherige Weg ueber die Anthropic-CLI. Ursache war die Bauart. Der bisherige Weg sucht waehrend der Pruefung selbst und kann bei duenner Beleglage nachfassen, die EU-Fassung bekam dagegen einen festen, vorab beschafften Stapel Belege und hatte genau einen Versuch. Drei Aenderungen schliessen die Luecke. 1. Mehr Belege je Pruefung. Statt 3 Anfragen mit je 3 Treffern laufen jetzt 7 Anfragen mit je 6 Treffern, und bis zu 14 statt 8 Pruefpunkte gehen in die Planung ein. Gleiche Quellen werden nur einmal in den Kontext gelegt. 2. Punktbezogene Planung. Das planende Modell ordnet jeder Suchanfrage zu, welche Behauptung sie belegen soll, statt allgemein zum Thema zu suchen. 3. Echte Nachhak-Runde. Bleiben nach der Pruefung mindestens zwei Behauptungen unbelegt, wird fuer genau diese noch einmal gesucht, mit anderen Anfragen als zuvor, und nur diese Punkte werden neu bewertet. Ein Status wird dabei nur angehoben, nie gesenkt, und faellt die Runde aus, bleiben die Fakten unveraendert. Die Nachhak-Runde greift in allen drei Pruefwegen, also bei der Erstpruefung, der inkrementellen Pruefung und der Pruefung in Themengruppen. Gruppen nutzen kleinere Suchmengen, da sie parallel laufen und je nur ein Teilthema abdecken. Alle Mengen sind ueber Umgebungsvariablen einstellbar. Der Weg ueber die Anthropic-CLI bleibt unveraendert, das sichern sechs Regressionstests ab. Neu sind zwei Testdateien mit zusammen 55 Pruefungen, die ohne Netzzugriff und ohne Kosten laufen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |