From 1ce7610e557f285e8675382eca5c053415a693df Mon Sep 17 00:00:00 2001 From: irrlicht Date: Tue, 8 Sep 2026 08:31:46 +0200 Subject: [PATCH] Akteure im Container, Kontakt im User-Agent Das Abbild traegt jetzt spaCy und de_core_news_lg 3.8.0 mit fester Version sowie den Wikidata-Spiegel. Es waechst dadurch von 1,28 auf 2,12 GB. Das Modell liegt im Abbild statt im Cache-Volume: 568 MB, die sich nie aendern, und der erste Lauf auf Prod soll nicht an einem Download haengen. Gemessen: ein Slot-Lauf im Container erzeugt bitgleich dieselbe Nutzlast wie die Workstation - 3407 Codings, 0 Abweichungen, gleiche coder_version. Der User-Agent fuer die WDQS traegt jetzt die Impressumsadresse des Projekts, wie es die Nutzungsrichtlinie erbittet. NOTES.md haelt fest, woher die Zeichenkette "None" kommt: bei leerer faellt der Poller auf content:encoded zurueck, und die ZEIT liefert dort einen Anker, dessen Text "None" lautet. Phase 1 schreibt getreu mit, der Fehler ist stromaufwaerts. Am Live-Feed reproduziert, 8 von 15 Items. Der Prod-Cluster-Dump ist per .gitignore ausgeschlossen - er enthaelt die Rollen samt Passworthashes, auch die von gitea und hedgedoc. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01NupWEBPzsyohVPG47HsTz8 --- NOTES.md | 38 ++++++++++++++++++++++++++++++++++++++ lexikon.py | 9 +++++---- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/NOTES.md b/NOTES.md index 397a1b0..5976ce9 100644 --- a/NOTES.md +++ b/NOTES.md @@ -412,3 +412,41 @@ Wahl. Bei Stapelgröße 64, 7 und 1 sowie rückwärts durchlaufen liefert `de_core_news_lg` für 400 Items identische Spannen. Der Kunstgriff mit der festen Tokenlänge, den die Embeddings brauchen, ist hier nicht nötig. + + +## Woher `None` wirklich kommt + +Reproduziert am Live-Feed, nicht erschlossen: bei Items mit leerer +`` fällt der Poller korrekt auf `content:encoded` zurück, und +dort liefert die ZEIT + +``` +None +``` + +Der Ankertext *ist* die Zeichenkette `None` — ein Renderfehler im CMS der +ZEIT. `klartext()` entfernt die Tags, und übrig bleibt `None`. Phase 1 +schreibt also getreu mit; der Fehler ist stromaufwärts. + +Am 8. September 2026 betraf das 8 von 15 Items im Feed. Im Prod-Bestand: + +| Tag | `None` / zeit-Items | +|---|---| +| 2026-09-04 | 12 / 20 | +| 2026-09-05 | 83 / 136 | +| 2026-09-06 | 187 / 262 | +| 2026-09-07 | 305 / 400 | +| 2026-09-08 | 67 / 79 | + +Gleichbleibend rund 70 bis 85 Prozent — der Fehler läuft weiter. + +## Container mit spaCy + +Das Abbild wächst durch `de_core_news_lg` von 1,28 auf 2,12 GB. Das Modell +liegt im Abbild, nicht im Cache-Volume: 568 MB, die sich nie ändern, und der +erste Lauf auf Prod soll nicht an einem Download hängen. + +Gemessen, nicht behauptet: ein Slot-Lauf im Container (Debian trixie, +Python 3.13) erzeugt für die Akteure bitgleich dieselbe Nutzlast wie die +Workstation (Fedora, Python 3.14) — 3407 Codings, 0 Abweichungen, gleiche +`coder_version`. diff --git a/lexikon.py b/lexikon.py index ad1857f..068a0c9 100644 --- a/lexikon.py +++ b/lexikon.py @@ -32,11 +32,12 @@ import urllib.request VERZEICHNIS = pathlib.Path(__file__).parent / "lexikon" ENDPUNKT = "https://query.wikidata.org/sparql" -# Die Nutzungsrichtlinie der WDQS bittet um einen sprechenden User-Agent. -# Eine Kontaktangabe gehoert hier hinein, sobald eine vereinbart ist - -# bis dahin steht nur der Name des Projekts da, keine fremde Adresse. +# Die Nutzungsrichtlinie der WDQS bittet um einen sprechenden User-Agent mit +# Kontaktangabe. Hier steht die Impressumsadresse des Projekts - eine +# oeffentliche Adresse, die genau dafuer da ist. KENNUNG = os.environ.get( - "WDQS_USER_AGENT", "wurzelwerk-p2/0.1 (Datenjournalismus-Pipeline Wurzelwerkt)" + "WDQS_USER_AGENT", + "wurzelwerk-p2/0.1 (Datenjournalismus-Pipeline Wurzelwerkt; stress@bnd.wtf)", ) # Pause zwischen zwei Abfragen. Die WDQS erlaubt mehr, aber wir haben es