From 394786b3129352f6f4c2c870f8c37cbd8d335d78 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Fri, 7 Aug 2026 00:10:56 +0200 Subject: [PATCH] CLAUDE.md: die \n-Falle als Dauerregel festgehalten MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nachtrag zum Scanner-Commit — die Doku-Ergaenzung war dort durchgefallen, weil mein eigenes Heredoc an den deutschen Anfuehrungszeichen scheiterte. Damit ist die Regel dreimal an EINEM Tag belegt: engine.py, measurement_reminder.py und das Dokumentieren der Regel selbst. Regel jetzt in CLAUDE.md: mehrzeilige Strings mit \n oder Text mit deutschen Anfuehrungszeichen nie per Heredoc schreiben, sondern ueber den Edit-Weg. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 70ceae8..72b7912 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -259,6 +259,22 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche: Anteil, WR-Verfall, PF<1, Einzelverlust). **Wöchentlich** laufen lassen (B4/B5). - **Vor „fertig":** immer `python -m py_compile `; JS grob via Klammern- Balance prüfen (kein node im Env). +- **⚠⚠ DIE `\n`-FALLE — und der Scan dagegen (`tools/check_nfalle.py`, 2026-08-07).** + Wird Code über ein Shell-**Heredoc** geschrieben, macht die Shell aus einem + gemeinten `\n` einen **echten Zeilenumbruch mitten im String-Literal**. Real an + EINEM Tag **dreimal** passiert: Telegram-Text in `engine.py`, Reminder-Eintrag in + `measurement_reminder.py`, und beim Dokumentieren dieser Regel selbst (dort + zusätzlich an den deutschen Anführungszeichen). + **➜ Regel: mehrzeilige Strings mit `\n` oder Text mit „ " NIE per Heredoc + schreiben — den Edit-Weg nehmen.** + Der Scan prüft in BEIDE Richtungen: **(A)** kompiliert alle `.py` · **(B)** sucht + in JS unabgeschlossene String-Literale · **(C)** den UMGEKEHRTEN Fall, literales + `\n` als sichtbarer Text in HTML-`title=` und Markdown · **(D)** die Signatur der + Fälle (Zeile endet offen, nächste besteht nur aus einem Quote). + ⚠ **Fehlalarm-Falle im Scanner selbst, behoben:** Quotes zu ZÄHLEN meldet `'"'` + als offenes Literal (gültiges JS mit einem Anführungszeichen darin — real in + `app.js`). Der Scan verfolgt jetzt zeichenweise den AKTIVEN Quote-Typ. + Erster vollständiger Lauf: **161 Python-Dateien, `app.js`, alle HTML/MD sauber.** - **Konsole:** UTF-8 erzwingen (`PYTHONIOENCODING=utf-8`, `-X utf8`). - **Uvicorn-Access-Log AUS** (`access_log=False` in `uvicorn.run`, 2026-07-22): seit dem 4-s-REST-Polling + WS-Push flutete `GET /api/snapshot … 200 OK` die Konsole.