Smoke-Test vf-nova Anti-Slop — 2026-05-19

Verifikation dass der Anti-Slop-Block in vf-nova System Prompt (v3.0, deployed 17:47 CEST) tatsaechlich wirkt.

Setup

  • Provider: AWS Bedrock eu-central-1, eu.anthropic.claude-sonnet-4-5-20250929-v1:0 (= Sonnet 4.6 EU-CRIS), direkt via CLI mit AWS-Profile av-production. Nicht ueber OWUI-Frontend, weil dessen Chat-API async ist und ohne Browser-Session nicht sauber pollbar.
  • System Prompt: kompletter Inhalt aus ~/source/apps/open-webui-vf/prompts/vf-nova.txt mit OWUI-Placeholders ({{CURRENT_DATE}} etc.) gefuellt.
  • Modell-Settings: max_tokens=4000, kein temperature-Override (Default 1.0).

Test 1 — Generischer SaaS-Hero (Slop-Trigger)

User-Prompt:

Bau mir ein modernes Hero fuer eine generische SaaS-Productivity-App namens Flowdash (KEIN VF-Kunde, also bewusst NICHT im VF-CI). Single-Slide-HTML, 1280x720, mit Headline + Subline + zwei Buttons. Hochwertig, nicht generisch.

Test-1.a — Baseline (v3.0 ohne Gradient-Erweiterung)

Befund: Modell hat den Anti-Slop-Block bewusst rezipiert und im Output explizit erklaert was es vermeidet (“#6366f1” explizit als verboten erwaehnt). ABER: #8b5cf6 (in der Blocklist!) wurde als Radial-Mesh-Background-Layer eingesetzt:

background: radial-gradient(circle at 20% 30%, #3B82F6 0%, transparent 40%),
            radial-gradient(circle at 80% 70%, #8B5CF6 0%, transparent 40%);
filter: blur(80px);

→ Modell interpretierte „Indigo verboten als Accent” und nutzte einen verbotenen Hex-Wert als Background-Glow-Layer. Schwachstelle im Anti-Slop-Block: zu auf-Accent-fokussiert formuliert.

Patch deployed

Anti-Slop-Block Cardinal Sin #1 erweitert: „Auch nicht als Background-Mesh, Radial-Gradient, sekundaere Akzent-Schicht, Glow-Effekt oder Filter-Blur-Layer.” — Diff: 207 chars zusaetzlich, neue Source-of-Truth-Groesse 44176 chars. Via Admin-API gepusht, HTTP 200.

Test-1.b — Nach Patch (selber User-Prompt)

Befund: #6366f1 nur noch in Anti-Slop-Awareness-Erwaehnung (“statt #6366f1 nutze…”), nicht im Code. Keine anderen Indigo-Hex-Werte. Modell hat als Akzent #2563EB (Tailwind Blue-600, nicht in der Blocklist) gewaehlt. Saubere Trennung Awareness vs Output.

✅ Patch wirkt.

Test 2 — WTMG Save-the-Date (VF-Brand-Trigger)

User-Prompt:

Bau mir ein Save-the-Date als HTML-Slide (16:9, 1280x720) fuer das WTMG Festival 2026 — Termin 12. Juli 2026, Location Hammer Park, Headliner ist DJ Sokol. Im VF-CI bitte.

Befund:

Brand-AnkerVorhanden
VF-Neongelb #C8FF62
Anthrazit-Background #0C0C0C
Futura PT Typography
WTMG / Welcome To My Garden
DJ Sokol als Headliner
Indigo-Hex-Verstoss✅ NONE
Lorem/Filler-Copy✅ NONE
Hammer Park✗ (Nova schrieb „Maximilianpark”)

Hammer-Park-Drift ist eine Halluzination — Nova hat den falschen Park geraten obwohl der User „Hammer Park” gesagt hat. Action Item: Anti-Slop-Block Regel #6 (Invented Metrics) sollte um „User-genannte Fakten respektieren, nicht durch andere ersetzen” erweitert werden. Anders gesagt: zusaetzlich zu „Invented Metrics” auch „Invented Location/People/Facts” verbieten.

✅ Brand-Adherence fertig. ⚠️ Fakten-Respekt braucht zweite Iteration.

Aggregate-Erkenntnisse

  1. Anti-Slop wirkt strukturell — Modell rezipiert den Block aktiv, erwaehnt teilweise was es vermeidet. Das ist Awareness-Pattern, nicht nur stiller Compliance.
  2. Edge-Cases brauchen prazisere Sprache — „verboten als Accent” reicht nicht, muss „verboten in jedem Layer” sein. Patch heute live.
  3. Fakten-Halluzinationen sind ein anderes Failure-Mode als Slop — der Anti-Slop-Block adressiert das nicht direkt. Cardinal Sin #6 (Invented Metrics) ist nah dran, aber benannte Locations/Personen sind nicht abgedeckt. Empfehlung: Cardinal Sin #6 in einem spaeteren Pass erweitern, ODER eine neue Regel „Respect User-Given Facts” als #8.
  4. Token-Cost pro Smoke-Call ~16k Input × 16.50/M = ca. 0.26. Tragbar fuer Verifikation.
  5. Bedrock-CLI ist der bessere Smoke-Pfad als OWUI-Chat-API solange wir keine Browser-Session haben. Reproduzierbar, deterministisch (mit temperature=0 waere es voll determinitisch), kein Auth-Drama.

Action Items aus diesem Run

WasWoPrioritaet
Anti-Slop-Block Cardinal Sin #1 erweitertDEPLOYEDdone
Cardinal Sin #6 um „User-Given Facts respektieren” erweiternspaeter (kein Phase-2-Blocker)nice-to-have
Smoke-Test-Script wiederholbar machen (Skript scripts/smoke-vf-nova.sh)spaeternice-to-have
Test-Session mit Julian (Live-Verifikation im Browser)offennach Phase-2-Start

Wiederverwendbarkeit

Smoke-Pattern via Bedrock-CLI ist wieder-anwendbar fuer jeden Custom-Model-System-Prompt-Update bei VF, anderen Kunden, Marvins eigenen Skills. Pattern:

  1. System Prompt aus OWUI fetchen (GET /api/v1/models/model?id=...)
  2. Source-of-Truth-File in ~/source/apps/<app>/prompts/ ablegen
  3. Edit + Push via POST /api/v1/models/model/update?id=... (mit Mozilla-User-Agent gegen Cloudflare 1010)
  4. Smoke-Test via aws bedrock-runtime invoke-model mit selbem System Prompt + 1-2 Test-User-Prompts
  5. Output gegen Erwartungs-Liste pruefen (Indigo-Hex absent, Brand-Anker vorhanden, etc.)
  6. Doku als Run-File hier ablegen

→ Kommt evtl als eigenes Skill-File intern/capabilities/skills/system-prompt-smoke/SKILL.md (Phase 3 oder spaeter, wenn Pattern oft genug wiederkommt).

Files in diesem Run

  • test-1-saas-hero-baseline.html — vor Patch, hat #8b5cf6 im Background
  • test-1-saas-hero-baseline-raw.md — Modell-Antwort als komplettes Markdown
  • test-1-saas-hero-after-patch.html — nach Patch, sauber
  • test-1-saas-hero-after-patch-raw.md
  • test-2-wtmg-save-the-date.html — VF-Brand vollstaendig
  • test-2-wtmg-save-the-date-raw.md