feat(blog): Anti-Slop Teil 3 veroeffentlichen #46

Merged
Phil merged 3 commits from feat/blog-anti-slop-3 into main 2026-08-28 12:43:20 +00:00
Owner

Live auf https://philflow.io/blog/anti-slop-3-modell-trainieren

Was drin ist

  • Body, Fussnoten und idempotentes Anlege-Skript fuer den Entry, nach dem Muster von Teil 2.
  • Zwoelf Illustrationen im gelockten Serienstil, drei Konzepte je Bildplatz; im Artikel stehen Hero (schreibende Roboterhand), Calque-Falle (Bauchrednerpuppe), FTPO gegen DPO (Vorschlaghammer gegen Pinzette) und der Cliffhanger (nachtraeglich gemalte Zielscheibe).
  • docs/DEPLOYMENT.md Gotcha 8.

Redaktionelles gegenueber der Vault-Quelle

  • Em-Dashes aufgeloest, der Live-Body von Teil 2 hat praktisch keine.
  • Zwei Doppelpunkt-Ueberschriften umbenannt, weil die Serie den Doppelpunkt-Tic selbst als Slop benennt.
  • kristallklar als Slop-Beispiel ersetzt: Teil 2 verteidigt das Wort ausdruecklich.
  • Die feste Banlist wird jetzt als genau die benannt, die Teil 2 verdaechtig genannt hat.
  • Verteidigte Phrasen und die 1000x-Statistik standen doppelt zu Teil 2, jetzt Rueckverweis.
  • Sektion "Wo es noch hakt" ersetzt durch "Was die Zahl nicht gemessen hat". Das Vorher/Nachher zeigte ein Nachher, das die Slop-Definition aus Teil 2 selbst verletzt ("keine Kompromisse"). Statt es zu kaschieren, benennt der Artikel den Bruch und belegt ihn: in den 36 Holdout-Texten steht "maximal" auf der FTPO-Seite 59-mal gegen einmal, "absolut" 55 gegen 5. Gegengeprueft gegen antislop-de/data/eval_raven_compare_broad_t0.7_v2.json. Verdikt und Whac-a-Mole bleiben Teil 4.

Zwei Ursachenfixes

  • Die SEO-Description setzt jetzt das Skript selbst. ether/seo nimmt sie verschachtelt entgegen, der Umweg ueber einen MCP-Aufruf nach dem Speichern war unnoetig.
  • Der Prod-Container mountet /opt/philflow nicht, Code liegt im Image. Ein rsync nach Schritt 4 des Deploys braucht ein erneutes build php + up -d; docker restart hilft nicht. Das war die Ursache der still leer bleibenden meta-description und steht jetzt in der Deploy-Doku.

Verifiziert auf Prod

HTTP 200, vier <figure>, Fussnoten 1 bis 5 vollstaendig, keine __FIGURE_*__-Platzhalter, Hero-Transform und jedes Inline-PNG auf 200, kein leeres srcset, meta-description gesetzt, Artikel im Blog-Index gelistet, Teil 1 und 2 sowie die Startseite weiter auf 200.

Offen

  • Drei Content-Migrationen von 2026-08-13 (m260813_055620_add_home_content_model und zwei Folge-Migrationen) scheitern auf Prod mit Handle "shortText" has already been taken. Vorbestehende Drift aus dem Relaunch-Zweig, unabhaengig von diesem PR, craft up bricht dadurch ab, ohne etwas anzuwenden. Braucht ein eigenes Issue.
  • Die Bildauswahl ist meine Empfehlung, nicht Phils. Acht Alternativen liegen im Repo.

Closes #45

Live auf https://philflow.io/blog/anti-slop-3-modell-trainieren ## Was drin ist - Body, Fussnoten und idempotentes Anlege-Skript fuer den Entry, nach dem Muster von Teil 2. - Zwoelf Illustrationen im gelockten Serienstil, drei Konzepte je Bildplatz; im Artikel stehen Hero (schreibende Roboterhand), Calque-Falle (Bauchrednerpuppe), FTPO gegen DPO (Vorschlaghammer gegen Pinzette) und der Cliffhanger (nachtraeglich gemalte Zielscheibe). - `docs/DEPLOYMENT.md` Gotcha 8. ## Redaktionelles gegenueber der Vault-Quelle - Em-Dashes aufgeloest, der Live-Body von Teil 2 hat praktisch keine. - Zwei Doppelpunkt-Ueberschriften umbenannt, weil die Serie den Doppelpunkt-Tic selbst als Slop benennt. - `kristallklar` als Slop-Beispiel ersetzt: Teil 2 verteidigt das Wort ausdruecklich. - Die feste Banlist wird jetzt als genau die benannt, die Teil 2 verdaechtig genannt hat. - Verteidigte Phrasen und die 1000x-Statistik standen doppelt zu Teil 2, jetzt Rueckverweis. - Sektion "Wo es noch hakt" ersetzt durch "Was die Zahl nicht gemessen hat". Das Vorher/Nachher zeigte ein Nachher, das die Slop-Definition aus Teil 2 selbst verletzt ("keine Kompromisse"). Statt es zu kaschieren, benennt der Artikel den Bruch und belegt ihn: in den 36 Holdout-Texten steht "maximal" auf der FTPO-Seite 59-mal gegen einmal, "absolut" 55 gegen 5. Gegengeprueft gegen `antislop-de/data/eval_raven_compare_broad_t0.7_v2.json`. Verdikt und Whac-a-Mole bleiben Teil 4. ## Zwei Ursachenfixes - Die SEO-Description setzt jetzt das Skript selbst. `ether/seo` nimmt sie verschachtelt entgegen, der Umweg ueber einen MCP-Aufruf nach dem Speichern war unnoetig. - Der Prod-Container mountet `/opt/philflow` nicht, Code liegt im Image. Ein rsync nach Schritt 4 des Deploys braucht ein erneutes `build php` + `up -d`; `docker restart` hilft nicht. Das war die Ursache der still leer bleibenden meta-description und steht jetzt in der Deploy-Doku. ## Verifiziert auf Prod HTTP 200, vier `<figure>`, Fussnoten 1 bis 5 vollstaendig, keine `__FIGURE_*__`-Platzhalter, Hero-Transform und jedes Inline-PNG auf 200, kein leeres `srcset`, meta-description gesetzt, Artikel im Blog-Index gelistet, Teil 1 und 2 sowie die Startseite weiter auf 200. ## Offen - Drei Content-Migrationen von 2026-08-13 (`m260813_055620_add_home_content_model` und zwei Folge-Migrationen) scheitern auf Prod mit `Handle "shortText" has already been taken`. Vorbestehende Drift aus dem Relaunch-Zweig, unabhaengig von diesem PR, `craft up` bricht dadurch ab, ohne etwas anzuwenden. Braucht ein eigenes Issue. - Die Bildauswahl ist meine Empfehlung, nicht Phils. Acht Alternativen liegen im Repo. Closes #45
Body, Fussnoten und Anlege-Skript fuer "Wie man einem Modell besseres
Deutsch beibringt", nach dem Muster von Teil 2. Zwoelf Illustrationen im
Serienstil, drei Konzepte je Bildplatz, damit die Auswahl am gerenderten
Artikel statt am Prompt getroffen wird.

Redaktionell gegenueber der Vault-Quelle: Em-Dashes aufgeloest, zwei
Doppelpunkt-Ueberschriften umbenannt, weil die Serie den Doppelpunkt-Tic
selbst als Slop benennt, und die Fussnoten 4 und 5 im Text verankert.

Refs #45

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YH8MxGE7AKCveHDAeEbyBb
Das Vorher/Nachher zeigte ein Nachher, das die Slop-Definition aus Teil 2
selbst verletzt ("keine Kompromisse"). Statt es zu ersetzen, benennt der
Artikel den Bruch jetzt und belegt ihn: in den 36 Holdout-Texten steht
"maximal" auf der FTPO-Seite 59-mal gegen einmal, "absolut" 55 gegen 5.
Die Sektion "Wo es noch hakt" weicht damit einer, die die gruene Zahl
tatsaechlich kippt, statt sie nur anzukuendigen; Verdikt und Whac-a-Mole
bleiben Teil 4 vorbehalten.

Dazu drei Anschlussfehler an Teil 2: "kristallklar" diente als Slop-Beispiel,
obwohl Teil 2 es ausdruecklich verteidigt; die feste Banlist wurde gebaut,
ohne den in Teil 2 erhobenen Verdacht gegen sie zu erwaehnen; die verteidigten
Phrasen und die 1000x-Statistik standen doppelt.

Refs #45

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YH8MxGE7AKCveHDAeEbyBb
Der Kommentar behauptete, das ether/seo-Model sei read-only. Es nimmt die
Description sehr wohl verschachtelt entgegen (SeoData::__construct mappt
description auf descriptionRaw), der Umweg ueber einen MCP-Aufruf nach dem
Speichern war unnoetig und beim Prod-Deploy die Quelle einer still leeren
meta-description.

Dazu Gotcha 8 in DEPLOYMENT.md: der Prod-Container mountet /opt/philflow
nicht, Code liegt im Image. Ein rsync nach Schritt 4 braucht ein erneutes
build php + up -d; docker restart hilft nicht.

Refs #45

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YH8MxGE7AKCveHDAeEbyBb
Phil merged commit 4870b2bd90 into main 2026-08-28 12:43:20 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Phil/philflow.io!46
No description provided.