Skip to content

fix: out/-Validierung ehrlich machen + alt=""-Falschmeldung beheben#5

Merged
KenBlasse merged 2 commits into
mainfrom
fix/out-staging-validation
Jun 10, 2026
Merged

fix: out/-Validierung ehrlich machen + alt=""-Falschmeldung beheben#5
KenBlasse merged 2 commits into
mainfrom
fix/out-staging-validation

Conversation

@KenBlasse

Copy link
Copy Markdown
Owner

Hintergrund

Code-Review des Repos. Der zentrale Fund: die automatische Validierung (CI + pre-commit) zielte auf out/ — einen gitignorierten Staging-Ordner, der in CI nie existiert und dessen Dateien nie gestaged werden. Die Prüfung lief real nur über die Fixtures, gab sich aber als out/-Absicherung aus.

out/ ist im Workflow ein Durchlauf-Ordner: erzeugen → prüfen → ins Zielprojekt übernehmen. Damit gehört die Prüfung an den Entstehungsort, nicht in die CI dieses Framework-Repos.

Änderungen

  • CI + pre-commit: out/ aus den Validierungs-Schritten entfernt. Sie prüfen jetzt klar die mitgelieferten Beispiel-Dokumente (= dass die Werkzeuge selbst sauber validieren).
  • new_doc.py --validate (neu): prüft das frisch erzeugte Dokument direkt — Markdown gegen Frontmatter/Schema, Newsletter gegen die HTML-Härtung; Verstoß → Exit 1. Optionales Flag, Default bleibt schlank.
  • validate_newsletter.py: alt="" wird nicht mehr als Fehler gewertet (für dekorative Bilder der WCAG-korrekte Weg); toter Code (_depth_at_head_style) entfernt.
  • sync_fields.py: Template-Pfad für den Drift-Check kommt aus config.yaml statt hartkodiert templates/<typ>.md.
  • Test-Isolation: _out() patcht gezielt load_config statt yaml.safe_load global — sonst sah der nachgelagerte --validate-Validator denselben Patch und konnte das Schema nicht laden.
  • README: Quick-Start + Nutzungsfluss auf --validate umgestellt, out/-als-Staging-Ordner klargestellt.

Verifikation

  • 52 pytest-Tests grün (vorher 48 + 4 neue: alt="", --validate md/newsletter/invalid).
  • validate_config.py, sync_fields.py --check, validate_newsletter.py --template, Fixtures: alle ok.
  • E2E manuell geprüft: --validate meldet bei status=quatsch korrekt Exit 1.

🤖 Generated with Claude Code

Alex Seitz and others added 2 commits June 10, 2026 23:19
Die automatische Validierung (CI, pre-commit) zielte auf out/ — einen
gitignorierten Staging-Ordner, der dort nie vorhanden ist. Die Prüfung lief
real nur über die Fixtures, gab sich aber als out/-Absicherung aus.

- CI + pre-commit: out/ aus den Validierungs-Schritten entfernt; sie prüfen
  jetzt klar die mitgelieferten Beispiel-Dokumente (= die Werkzeuge selbst).
- new_doc.py: --validate prüft das frisch erzeugte Dokument direkt am
  Entstehungsort (Markdown→Schema, Newsletter→HTML-Härtung). Das ist der
  passende Ort für den Fluss erzeugen → prüfen → ins Zielprojekt.
- validate_newsletter.py: alt="" wird nicht mehr als Fehler gewertet (für
  dekorative Bilder der WCAG-korrekte Weg); toter Code entfernt.
- sync_fields.py: Template-Pfad für den Drift-Check kommt aus config.yaml
  statt hartkodiert templates/<typ>.md.
- Test-Isolation: _out() patcht gezielt load_config statt yaml.safe_load
  global (sonst verseucht der --validate-Lauf den nachgelagerten Validator).

52 pytest-Tests grün, alle Validatoren ok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- validate_newsletter.py: max-width wird per Regex auf echten px-Wert mit
  Obergrenze (<=1000px) geprüft statt nur als Substring. "max-widthhack" und
  "max-width:9999px" zählen nicht mehr als gültiger Mail-Container.
- sync_fields.py: replace_block ersetzt nur den ersten Marker-Block (count=1) —
  doppelte Marker werden nicht stillschweigend vervielfältigt.
- Alle read_text/write_text der Skripte mit encoding="utf-8" — robust gegen
  Nicht-UTF-8-Locales (deutsche Inhalte mit Umlauten).

54 pytest-Tests grün (+2 für die max-width-Härtung).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@KenBlasse KenBlasse merged commit 8a78fbe into main Jun 10, 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