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.