Skip to content

Sicherheitshaerte und fachliche Differenzierung - #5

Merged
GodModeAI2025 merged 13 commits into
mainfrom
feat/welle-5
Sep 4, 2026
Merged

GodModeAI2025 merged 13 commits into
mainfrom
feat/welle-5

Conversation

@GodModeAI2025

Copy link
Copy Markdown
Owner

Welle 5: Beleglage, Eval-Set, ehrliche Landingpage, Abgrenzung

Branch feat/welle-5, sieben Commits, Version auf 2.4.0.

Was umgesetzt ist

Quellen datiert, unbelegte Zahlen zurückgezogen. Der Skill nannte sich an drei Stellen evidenzbasiert und führte keine einzige Quellen-URL. references/SOURCES.md hält jetzt für jede Aussage fest, worauf sie beruht: sieben Quellen mit URL, Veröffentlichungs- und Abrufdatum, davon fünf Primärquellen von LinkedIn, und je Quelle ein Absatz, was sie ausdrücklich nicht belegt. Elf Zahlen ließen sich nicht belegen und sind ohne Ersatzzahl aus SKILL.md, SCORING.md, TEMPLATES.md, README, Landingpage und Report-Template entfernt, darunter der Plattformdurchschnitt der Engagement-Rate, die Engagement-Werte je Postformat und die Wirkungsfaktoren fürs Kommentieren. Die Tabelle „Zurückgezogen" nennt jede mit Begründung.

Zwei Sachfehler kamen dabei heraus. Das goldene Community-Top-Voice-Badge ist seit dem 08.10.2024 zurückgezogen; das Sub-Kriterium „Collaborative Articles" bewertete also ein Verhalten ohne Wirkung und entfällt, der Punkt liegt bei „Momentum". Den Creator-Mode-Schalter gibt es seit März 2024 nicht mehr; er stand als Punkt 15 in der 18-Punkte-Checkliste, deren Zahl direkt in einen Score übersetzt wird.

Der Nenner der Engagement-Rate ist geklärt. SCORING.md rechnet über Impressions, das Report-Template schätzt aus der Follower-Zahl. SCORING.md sagt jetzt, dass das Raster nur für den impressions-basierten Wert gilt, dass der Schätzwert systematisch höher liegt und nur im Zeitverlauf desselben Profils verglichen wird. Der Report kennzeichnet den Wert entsprechend.

Kategorienamen vereinheitlicht. Dieselben zehn Kategorien liefen unter drei Benennungen: generate_report.js kürzte vier davon ab, und SCORING.md selbst nutzte im Rechenbeispiel und in der Balkendarstellung weitere Kurzformen. Ab jetzt gilt eine Schreibweise, geprüft an vier Stellen.

Eval-Set. tests/ enthält drei frei erfundene Profile, je eine Datei mit erwarteten Bändern und tests/run_eval.py. Der Runner liest das Gewichtsmodell aus SCORING.md, prüft die Gewichtssumme, die wortgleichen Kategorienamen an vier Stellen, Gewicht und Maximalbeitrag im Report-Template, rechnet den Gesamtscore aus den Rohscores nach und prüft die Bänder. Drei Kategorien werden nicht geglaubt, sondern nachgerechnet: Posting-Frequenz aus Posts pro Woche, Netzwerk & Follower aus der Follower-Zahl, Profil-Vollständigkeit aus den 18 Haken. Ändert jemand eine der drei Bewertungstabellen, meldet der Runner, welche Umrechnung nachzuziehen ist.

Landingpage. Die Scoring-Engine war schon in einer früheren Welle auf das Modell von SCORING.md gestellt, der gezeigte Gesamtscore 70,0 rechnet sich sauber aus den Einzelwerten. Offen war der Anschein: der Abschnitt hieß „Live Demo". Er heißt jetzt „Beispiel-Dialog", nennt die Herkunft der Zahlen und verlinkt tests/fixtures/profile_mid.json. Neue Zahlen kommen nicht dazu. Der Runner prüft die zehn Balken samt Balkenbreite, den Ring und die vier Werte im Dialog gegen das Fixture.

Abgrenzung zum Orchestrator. Entscheidung: getrennt lassen. SKILL.md, README und Landingpage nennen beide Rollen, hier die einmalige Ist-Analyse mit den Profil-Artefakten, dort der laufende Betrieb. Der eigentliche Punkt ist die Trigger-Überschneidung, weil beide Descriptions auf „Profil optimieren", „Profil verbessern", „Personal Branding", „Content-Strategie" und „Top Voice" greifen. SKILL.md löst das mit vier Regeln: welche Frage wohin geht, dass bei gemischten Anfragen die Ist-Analyse zuerst läuft und danach übergeben wird, und dass „Top Voice" in beiden Skills zweierlei meint. Die Description trägt denselben Hinweis, damit die Auswahl vor dem Laden greift.

Wie geprüft

Zwei neue CI-Schritte, scripts/check_sources.py und tests/run_eval.py, beide mit Gegenproben belegt statt nur mit einem grünen Lauf.

check_sources.py prüft Stand- und Prüfdatum, URL und Datum je Quellenzeile, dass jede zitierte Quellen-ID existiert, und dass keine der 14 zurückgezogenen Angaben zurück in den Skill wandert. Gegenproben: eine wieder eingefügte 3,4-Prozent-Angabe und eine unbekannte ID Q99 führen beide zu Exitcode 1 mit Datei und Zeilennummer.

run_eval.py läuft grün über alle drei Fixtures (21,6 / 70,0 / 88,4). Vier Gegenproben führen zu Exitcode 1: ein zurückgedrehter Kategoriename im Report-Template, eine verstellte Follower-Zahl im Fixture, ein verschobenes Gewicht in SCORING.md (Summe 102 Prozent) und ein Ergebnislauf außerhalb der Bänder. Drei weitere Gegenproben decken die Landingpage ab: verstellter Balkenwert, verstellter Wert im Beispiel-Dialog, verstellter Gesamtscore im Dialog.

Alle Schritte aus ci.yml sind lokal nachgefahren und grün, einschließlich beider Banner-Fälle und der Paketprüfung. Beide Workflow-Dateien wurden zusätzlich als YAML geparst, weil ci.yml per Textersetzung geändert wurde. Das Paket baut reproduzierbar, zwei Läufe liefern identische Bytes, der Inhaltsvergleich gegen die Positivliste ist ohne Unterschied. Die Vorprüfung des Release-Workflows wurde in beide Richtungen getestet: --expect v2.4.0 endet mit 0, --expect v2.3.0 mit 1. Interne Links und Anker in README, SKILL.md, references/ und index.html sind mit einem Skript geprüft und lösen alle auf.

Was bewusst offen bleibt

Ein echtes Vorher-Nachher. Das braucht zwei datierte Messungen desselben Profils im Abstand von 60 bis 90 Tagen, und schon die erste fehlt. Statt eine Erfolgszahl zu bauen, steht auf der Landingpage und in der README, dass es sie nicht gibt.

Die Gegenrichtung im Repo LinkedIn-Orchestrator. Dessen Tabelle beschreibt diesen Skill in einer Zeile ohne Trigger-Regel, und seine Description greift weiter auf „Profil optimieren". Das ist ein eigener Vorgang in jenem Repo.

Die SSI-Aufteilung „4 × 25 Punkte". LinkedIn benennt die vier Säulen, die Punkteverteilung bestätigt es nicht. Sie bleibt im Skill, aber als Konvention gekennzeichnet.

Die Erfahrungswerte. Zeichenlängen für Headline und About, Posting-Kadenz, Postingzeiten, die Formatreihenfolge und die Punktebänder in SCORING.md bleiben unbelegt. Sie stehen gesammelt in einem eigenen Abschnitt von SOURCES.md, damit niemand sie für Messwerte hält.

Sieben der zehn Kategorien sind nur bandgeprüft, drei werden nachgerechnet. Ein LLM-Scoring ist nicht deterministisch; engere Bänder erzeugen rote Läufe ohne Erkenntnisgewinn.

Q6 (Hootsuite) ist eine fortlaufend aktualisierte Seite. Das Abrufdatum trägt dort mehr Gewicht als sonst, und der Prüfrhythmus in SOURCES.md fängt das ab: nächste Prüfung 04.03.2027.

Zwei bewusste Abweichungen von der Aufgabenformulierung: die Fixtures sind frei erfunden statt anonymisiert, weil anonymisieren die Erhebung realer Profile Dritter voraussetzt, die SECURITY.md einschränkt; und die Erwartungsdateien sind JSON statt YAML, damit der CI-Schritt ohne zusätzliche Abhängigkeit läuft.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk

Wie dieser Branch entstanden ist

Vier Durchgaenge, jeder mit eigener Abnahme, die selbst gemessen hat statt Berichte zu glauben.

  1. Umsetzung der Welle-5-Aufgaben.
  2. Die Abnahme fand in allen sieben Repos Befunde und gab keinen einzigen frei. Der wiederkehrende
    Typ: eine Sicherheitsaussage in der Doku, die eine Messung widerlegt, und ein Gate, das
    durchlaesst, sobald jemand das richtige Wort hinschreibt.
  3. Nacharbeit, danach eine zweite Abnahme. Sie fand, dass die Nacharbeit an mehreren Stellen neue
    Probleme eingebaut hatte, darunter eine echte Erkennungsregression.
  4. Letzte Runde, streng auf Blocker und Regressionen begrenzt, mit der Vorgabe: wo sich eine
    Aenderung nicht sauber reparieren laesst, wird sie zurueckgebaut. Gemessen wurde gegen den Stand
    von main, nicht gegen den eigenen Zwischenstand.

Gepruefte Abnahmekriterien

Vor dem Oeffnen dieses Pull Requests wurde am Branch nachgemessen:

  • alle CI-Schritte aus .github/workflows/ci.yml laufen lokal durch
  • das Packaging-Skript baut das Release-Artefakt, und der Paketpruefer nimmt es an
  • der Arbeitsbaum ist sauber, im Diff stehen keine Zugangsdaten und keine Personendaten

Was offen bleibt, steht in der Beschreibung darueber. Es ist bewusst offen und nicht uebersehen.


Gestapelt. Dieser PR sitzt auf main. GitHub haengt ihn automatisch auf main um, sobald der darunterliegende PR gemergt ist. Vorher zeigt der Diff nur die Welle-3-Aenderungen, das ist so gewollt.

Teil von Welle 5 des Haerteplans: Sicherheitshaerte. Jede Aenderung wurde von einem zweiten Durchgang abgenommen, der das Artefakt selbst gebaut, entpackt und den Installationsweg durchgegangen ist.

Mark Zimmermann and others added 13 commits September 4, 2026 22:37
Der Skill nannte sich an drei Stellen evidenzbasiert und fuehrte keine
einzige Quellen-URL und kein Veroeffentlichungsdatum.

references/SOURCES.md haelt jetzt fuer jede Aussage fest, worauf sie beruht:
sieben Quellen mit URL, Veroeffentlichungs- und Abrufdatum, dazu je Quelle,
was sie ausdruecklich nicht belegt. Vier davon sind Primaerquellen von
LinkedIn.

Elf Zahlen liessen sich nicht belegen und sind ohne Ersatzzahl aus SKILL.md,
SCORING.md, TEMPLATES.md, README, Landingpage und Report-Template entfernt,
darunter der Plattformdurchschnitt von 3,4 Prozent, die Engagement-Werte je
Postformat und die Wirkungsfaktoren fuers Kommentieren. Die Tabelle
"Zurueckgezogen" nennt jede davon mit Begruendung.

Zwei Sachfehler kamen dabei heraus und sind korrigiert: das goldene
Community-Top-Voice-Badge ist seit dem 08.10.2024 zurueckgezogen, das
Sub-Kriterium Collaborative Articles entfaellt deshalb; den Creator-Mode-
Schalter gibt es seit Maerz 2024 nicht mehr. Top-Voice-Nominierungen prueft
LinkedIn quartalsweise, nicht halbjaehrlich.

Der Nenner der Engagement-Rate ist in SCORING.md geklaert: das Raster gilt
fuer den impressions-basierten Wert, der follower-basierte Schaetzwert wird
nur im Zeitverlauf desselben Profils verglichen.

scripts/check_sources.py prueft das in der CI und faellt aus, wenn eine
zurueckgezogene Zahl zurueckkommt oder eine zitierte Quellen-ID fehlt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Nach dem Zuruecknehmen der Benchmark-Zahlen sprachen README, SKILL.md und die
Landingpage an fuenf Stellen weiter von Industrie-Benchmarks, und die SSI-Karte
nannte die 25-Punkte-Aufteilung als Tatsache, waehrend zwei Bildschirme weiter
steht, dass LinkedIn sie nicht bestaetigt.

Der README-Anker auf die Engagement-Tabelle zeigte nach der Umbenennung ins
Leere und ist korrigiert. check_sources.py faengt beide Rahmungen jetzt mit ab.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Dieselben zehn Scoring-Kategorien liefen unter drei Benennungen: SCORING.md
und SKILL.md nannten sie voll, generate_report.js kuerzte vier davon ab, und
in SCORING.md selbst standen im Rechenbeispiel und in der Balkendarstellung
noch einmal andere Kurzformen. Ab jetzt gilt eine Schreibweise.

tests/ enthaelt drei frei erfundene Profil-Fixtures, je eine Datei mit den
erwarteten Baendern und einen Runner. Frei erfunden statt anonymisiert: ein
Echtprofil zu erheben und danach zu verfremden waere genau die Verarbeitung,
die SECURITY.md einschraenkt.

tests/run_eval.py liest das Gewichtsmodell aus SCORING.md und prueft damit:
Gewichtssumme 100, wortgleiche Kategorienamen an vier Stellen, Gewicht und
Maximalbeitrag im Report-Template, Nachrechnung des Gesamtscores, die Baender
je Kategorie und dass die Zahlen der Scoring-Engine auf der Landingpage aus
profile_mid stammen.

Drei Kategorien werden nicht geglaubt, sondern nachgerechnet: Posting-Frequenz
aus Posts pro Woche, Netzwerk & Follower aus der Follower-Zahl,
Profil-Vollstaendigkeit aus den 18 Haken. Aendert jemand eine der drei
Bewertungstabellen, meldet der Runner, welche Umrechnung nachzuziehen ist.

Die offene Frage aus der Gegenpruefung ist entschieden statt umgangen: die
Fixtures fuehren Impressions als null und die Rate als
engagement_rate_follower_basis. Der Runner erzwingt beides, und die Rate geht
in keine Kategoriebewertung ein, weil das Raster in SCORING.md den
impressions-basierten Wert meint.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Der Abschnitt hiess "Live Demo" und zeigte einen Profil-Score, als waere er
gemessen. Er heisst jetzt "Beispiel-Dialog", nennt die Herkunft der Zahlen und
verweist auf tests/fixtures/profile_mid.json.

Neue Zahlen kommen nicht dazu. Die Werte der Scoring-Engine und des Dialogs
sind dieselben wie im Rechenbeispiel in SCORING.md, und tests/run_eval.py
prueft jetzt beide Stellen gegen das Fixture, auch die Balkenbreiten.

Was fehlt, steht auf der Seite und in der README: ein Vorher-Nachher braucht
zwei datierte Messungen desselben Profils im Abstand von 60 bis 90 Tagen. Die
liegen nicht vor, also steht dort ein nachrechenbares Beispiel statt einer
Erfolgszahl.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Entscheidung ist getrennt lassen. Bisher stand die Abgrenzung nur im
Orchestrator, und dort in einer Zeile ohne Regel. In diesem Repo kam der
Schwester-Skill an keiner Stelle vor.

SKILL.md, README und Landingpage nennen jetzt beide Rollen: hier die einmalige
Ist-Analyse mit den Profil-Artefakten, dort der laufende Betrieb mit
Wochensystem, Community und Analytics.

Der eigentliche Punkt ist die Trigger-Ueberschneidung. Beide reagieren auf
"Profil optimieren", "Profil verbessern", "Personal Branding",
"Content-Strategie" und "Top Voice". SKILL.md loest das mit vier Regeln statt
mit einer Tabelle: welche Frage wohin geht, was bei gemischten Anfragen zuerst
laeuft und wie mit Top Voice umzugehen ist, das in beiden Skills vorkommt und
zweierlei meint. Die Description traegt denselben Hinweis, damit die Auswahl
schon vor dem Laden greift.

Die Gegenrichtung im Orchestrator ist damit nicht erledigt, das ist ein
eigener Vorgang in jenem Repo. Der Hinweis darauf steht in der README.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Aenderungen dieser Welle greifen in den fachlichen Kern ein: elf Zahlen
sind aus dem Skill entfernt, zwei Sub-Kriterien geaendert und vier
Kategorienamen im Report-Template umbenannt. Das darf nicht unter der bereits
veroeffentlichten 2.3.0 stehen.

VERSION ist die Quelle, check_versions.py prueft die sechs Kopien dagegen. Der
Changelog in SKILL.md nennt, was sich geaendert hat.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
In SCORING.md waren im neuen Eval-Abschnitt ASCII-Umschreibungen stehen
geblieben, darunter eine vierte Schreibweise von Profil-Vollstaendigkeit,
ausgerechnet in dem Dokument, das die Schreibweise verbindlich macht. SKILL.md
verlangt an dieser Stelle ausdruecklich echte Umlaute.

SCORING.md sagt jetzt ausserdem, dass das Eval-Set im Repo unter tests/ liegt
und nicht im Skill-Paket. Wer nur das Paket hat, sucht sonst nach Dateien, die
darin nicht vorkommen.

Die Fixtures nannten fuer zwei Headlines eine Zeichenzahl, die nicht zur
Zeichenzahl des hinterlegten Textes passte.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Dieselbe Checkliste lief unter drei Laengen: 15 Elemente in SKILL.md Phase 4.3,
17 in der Audit-Tabelle von scripts/generate_report.js, 18 in der Checkliste in
references/SCORING.md. In den ersten beiden standen weiter "Creator Mode" und
"Collaborative Articles". Beides ist laut Q3 und Q7 in SOURCES.md hinfaellig,
und beides wanderte als Zeile in den DOCX-Report des Kunden. SKILL.md widersprach
sich damit selbst: Zeile 281 und 350 sagen richtig, dass Collaborative Articles
auf kein Badge mehr einzahlen, Zeile 214 liess danach pruefen.

Die Checkliste in SCORING.md Abschnitt 9 ist jetzt die Quelle der Wahrheit. Jede
Zeile hat die Form "Kurzname (Kriterium)", der Kurzname ist der Name in den
beiden anderen Listen. tests/run_eval.py vergleicht die drei Listen nach Namen
und Reihenfolge, prueft die Stueckzahl im Satz in SKILL.md und die beiden
Stellen im Report, die "18 Elemente" im Klartext nennen.

Kein Textverbot auf die beiden Begriffe: das wuerde die richtigen Verneinungen
in SKILL.md mitreissen. Was die Bindung deckt, ist die Elementliste. Ein
Fliesstextsatz wie "Collaborative Articles bringen das goldene Badge" faellt ihr
nicht auf; das steht so im Docstring von run_eval.py.

"Video-Content" faellt aus der Audit-Tabelle. Es ist kein Profil-Element der
Vollstaendigkeits-Checkliste, sondern Content-Aktivitaet, und die hat im Report
einen eigenen Abschnitt.

Die Fixtures tragen die Checklistenpunkte als Schluessel und sind auf den neuen
Wortlaut gezogen. Die Werte bleiben, die Score-Baender halten.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die VERBOTEN-Liste in scripts/check_sources.py war eine Blockliste woertlicher
Schreibweisen neben der Tabelle "Zurückgezogen", nicht aus ihr. 11 von 15
Umgehungsproben endeten mit exit=0: "3.4 %" mit Punkt, "3,4 Prozent"
ausgeschrieben, "3,4&nbsp;%" als Entity, "6.6%", "2,5x mehr" mit ASCII-x,
"2,5-faches Gewicht". Zur zurueckgezogenen Aussage ueber Profilaufrufe und
Content-Reichweite gab es nur ein Muster fuer die eine Haelfte, "+20 %
Content-Reichweite" hatte keines. 12 Tabellenzeilen standen 14 Mustern
gegenueber, ohne dass etwas die beiden aneinander band.

Die Tabelle hat jetzt die Spalte "Sperrmuster" und ist die Quelle. Das Skript
normalisiert die Tokens daraus: Ziffern mit [.,], Prozentzeichen und
ausgeschriebenes Wort, ASCII-x und Malzeichen, Leerraum samt &nbsp;,
typografische Bindestriche, fuehrendes + oder ~ optional, Gross- und
Kleinschreibung egal. Vor und hinter Zahlen steht eine Grenze, damit "20 %"
nicht in "220 Zeichen" anschlaegt.

Die Tabelle wird gegen sich selbst geprueft: Jede Prozentangabe und jeder Faktor
in der Spalte "Frühere Aussage" muss von einem Muster derselben Zeile getroffen
werden. Eine neue Zeile ohne Sperrmuster-Spalte, mit leerer Spalte oder mit
"keine:" trotz Zahl faellt jetzt auf, statt still durchzugehen.

Drei Aussagen sind neu in der Tabelle und damit erstmals gesperrt: die Rahmung
als Industrie-Benchmark, die Rahmung der Baender als Engagement-Rate-Benchmarks
und die Selbstbeschreibung "Dieser Skill ist evidenzbasiert". Zusaetzlich
gesperrt sind jetzt die Werte 3,3 % und 3,2 % aus der Branchenzeile, fuer die
es bisher kein Muster gab.

Die Quellen-ID-Pruefung sucht nach \bQ\d+\b statt nur nach runden Klammern.
"[Q99]", "(Q99, Abruf 2026)" und "siehe Q99" kamen bisher durch. Ein Fehlalarm
in Fliesstext ist billiger als eine erfundene Quelle im Paket.

Zwei Grenzen stehen jetzt im Skript, in SOURCES.md und in der README, statt
verschwiegen zu werden: Die Sperren pruefen Schreibweisen, keine Aussagen, und
fuer "Collaborative Articles" gibt es bewusst keine Textsperre, weil sie die
richtigen Verneinungen in SKILL.md mit treffen wuerde. Dort ist die Elementliste
gebunden, nicht der Fliesstext. Beim Wort "evidenzbasiert" faengt das Muster nur
die Selbstbeschreibung, weil das Wort in der Branchentabelle als Tonfall fuer
Healthcare legitim steht.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Kommentare ueber den beiden Pruefschritten beschrieben den Stand vor dieser
Runde. "Beleglage pruefen" sagt jetzt, dass die Sperren aus der Spalte
"Sperrmuster" der Tabelle kommen, dass die Tabelle gegen sich selbst geprueft
wird und dass geprueft wird, wie etwas geschrieben ist, nicht was es behauptet.

"Eval-Set fahren" nennt die beiden Bindungen, die dazugekommen sind: die 18
Profil-Elemente an drei Stellen und der Wortlaut, mit dem die Landingpage ihren
Dialog als Beispiel ausweist. Der zweite Punkt kam mit dem Commit zur
Elementliste ins run_eval.py, ohne dass die Commit-Message ihn genannt hat:
LANDING_EHRLICHKEIT bindet die Ueberschrift "Beispiel-Dialog", die Statuszeile
"Nachgestellter Dialog" und den Satz, der die Fixture nennt. Vorher liessen sich
alle drei auf "Live Demo" und "Live-Analyse" zuruecksetzen, ohne dass ein Schritt
anschlug. Gebunden waren nur die Zahlen, nicht die Aussage, dass sie nicht
gemessen sind.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
SOURCES.md verlangt im Pruefrhythmus, dass Aenderungen an den ausgelieferten
Dateien im Changelog stehen. Der Eintrag zu v2.4.0 nannte die Runde davor, aber
nicht die Elementliste, die Audit-Tabelle, die Sperrmuster-Spalte und die
erweiterte Quellen-ID-Pruefung.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Spalte "Sperrmuster" liess eine Zeile mit "keine:" und einer beliebigen
Begruendung von der Sperre frei. Damit hing die einzige Sperre gegen den
zurueckgezogenen Creator Mode an einer Tabellenzelle, die jede Begruendung
annimmt; dasselbe galt fuer Industrie-Benchmark, Engagement-Rate-Benchmarks,
Halbjaehrliche Ueberpruefung und evidenzbasiert. Die Ausnahme ist wieder raus.
Die Zeile zu den Collaborative Articles traegt jetzt die Schreibweisen, die in
v2.3.0 tatsaechlich im Skill standen.

Drei Umgehungen, die das Skript bisher durchliess:

- "Creator-Mode" mit Bindestrich ging an "Creator Mode" vorbei. Leerraum in
  einem Muster faengt jetzt auch den Bindestrich.
- "Halbjaehrliche" in ae-Umschrift ging an "Halbjährliche" vorbei. Umlaute in
  einem Muster fangen jetzt auch ihre Umschrift.
- "Umfragen erreichen ~5 %" ging an "Umfragen ~5 %" vorbei, weil das Kontextwort
  direkt vor der Zahl stehen musste. Drei Punkte im Muster stehen jetzt fuer
  eine Luecke von bis zu 40 Zeichen.

Fuer die Behauptung, die sich nicht ueber eine Schreibweise sperren laesst,
steht eine Belegpflicht im Skript statt in der Tabelle: Ein Absatz, der
Collaborative Articles und ein Badge in einem Zug nennt, muss Q3 zitieren. Der
frei formulierte Satz "Collaborative Articles bringen das goldene
Community-Top-Voice-Badge" faellt damit auf. Eine falsche Aussage mit richtiger
Quellenangabe kommt weiter durch, das steht so im Docstring, in SOURCES.md und
in der README.

Dazu die letzte Laengen-Unstimmigkeit: die Beschreibung der Deliverables in
SKILL.md nannte weiter 17 Profil-Elemente, waehrend Checkliste, Phase 4.3 und
die Audit-Tabelle auf 18 stehen. run_eval.py bindet die Stueckzahl jetzt auch
dort und meldet jede abweichende Zahl.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Tabellenzelle liess sich weiter aushebeln, nur leiser als vorher: Wer
"Creator Mode" durch ein beliebiges anderes Wort ersetzte, behielt eine Zeile,
einen stimmigen Zaehler und eine Sperre, die ins Leere lief. Jetzt muss
mindestens ein Muster jeder Zeile den eigenen Wortlaut in der Spalte "Frühere
Aussage" treffen.

Damit die Zeile zu den Collaborative Articles das erfuellt, traegt ihre Spalte
"Frühere Aussage" jetzt den Wortlaut, der bis v2.3.0 in SCORING.md und SKILL.md
stand, statt nur den Namen des Sub-Kriteriums.

Offen bleibt, und das steht in SOURCES.md und im Docstring: ein Muster laesst
sich auf einen Teil des Wortlauts verengen, etwa von "Creator Mode" auf
"Creator Mode aktiv". Das faellt der Pruefung nicht auf, steht aber als
Aenderung in der Tabelle.

Ausserdem trifft die Rueckweisung jetzt nur noch die alte Schreibweise
"keine:" und nicht mehr jedes Muster, das mit dem Wort keine beginnt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
@GodModeAI2025
GodModeAI2025 merged commit 2ea4a5f into main Sep 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant