Zwei Saetze in CLAUDE.md beschrieben den Code nicht genau. "Nie auf rohe Hexwerte" hat sechs begruendete Ausnahmen, nicht null: Papier, ein QR-Decoder und das Web-App-Manifest entscheiden nicht nach unserem Farbschema. Sie stehen jetzt als Tabelle mit Begruendung je Zeile. Die Regel wurde ergaenzt, nicht der Code geaendert -- eine Konstante ueber drei unverwandte Dinge haette die Begruendung versteckt. Das Tor vor jedem Commit nennt den LDAP-Container. Ohne ihn ueberspringt die Suite 22 Tests -- nachgezaehlt, nicht geschaetzt: 81 mit Container, 59 ohne. Sie sagt es auf stderr, der Lauf sieht trotzdem gruen aus. Im README fehlte zusaetzlich format:pruefen, das CLAUDE.md seit #010 verlangt. Damit das haelt, auch wenn niemand hinsieht: pruefe:doku vergleicht die beiden Schranken-Bloecke und verlangt von beiden den Container. Gegenprobe gefahren. Der Review hatte vier Hexwerte genannt und src/lib/qr.ts uebersehen, und das Issue behauptete die Regel stehe auch in docs/architektur.md -- tut sie nicht. Beides im Issue-Text richtiggestellt, statt einen Haken ueber falschen Text zu setzen. Closes #40
2.6 KiB
#026 Zwei Konventionen präzisieren, die strenger klingen als sie gemeint sind
Status: erledigt Im Tracker: #40 Meilenstein: v0.2.0 Labels: phase-2, docs Geschätzt: 1 h Tatsächlich: 20 min
Ziel
Zwei Sätze in CLAUDE.md beschreiben den Code nicht genau. Beide fielen beim Abnahme-Review zu
#019 auf.
Nachtrag aus der Umsetzung: docs/architektur.md trägt die Gestaltungsregel gar nicht — sie
steht nur in CLAUDE.md. Und es sind sechs Ausnahmen, nicht vier: der Review hat src/lib/qr.ts
übersehen, wo der QR-Code reines Schwarz auf reinem Weiß braucht, damit ein Decoder ihn liest.
1. Rohe Hexwerte. Die Regel sagt „Komponenten greifen nur darauf zu, nie auf rohe Hexwerte“.
Tatsächlich stehen sechs begründete Ausnahmen im Code: #ffffff in drucken/lauf/[id]/page.tsx und
drucken/etiketten/page.tsx (Druck ist immer hell, unabhängig vom Farbschema der Anwendung),
#000000ff/#ffffffff in src/lib/qr.ts (ein QR-Code muss reines Schwarz auf reinem Weiß sein)
sowie #0B0D10 in layout.tsx und zweimal in manifest.ts (themeColor und das Manifest
vertragen keine CSS-Variablen). Die Regel ist strenger formuliert als gemeint — sie soll um diese
Ausnahmen ergänzt werden, nicht der Code geändert.
2. pnpm test ohne LDAP-Container. „Vor jedem Commit“ in CLAUDE.md und „Qualitätsschranken“ im
README nennen pnpm test, aber nicht
docker compose -f docker-compose.test.yml up -d ldap. Ohne den Container überspringt die Suite die
Tests gegen das echte Verzeichnis — sie sagt das auf stderr, aber der Lauf sieht grün aus. Wer nur
dem dokumentierten Weg folgt, prüft den Verzeichnis-Abgleich nie. Ein Satz in beiden Dateien.
Nachgezählt sind es 22 Tests: tests/abgleich.test.ts und tests/verzeichnis.test.ts ergeben
mit Container 81, ohne 59. Dabei fiel auf, dass im README zusätzlich format:pruefen fehlte.
Aufgaben
- Ausnahme für rohe Hexwerte in
CLAUDE.mdbenennen, mit Begründung (indocs/architektur.mdsteht die Regel nicht) - Den LDAP-Container in
CLAUDE.md(„Vor jedem Commit“) undREADME.mdaufnehmen - Prüfen, ob sich der Hinweis maschinell absichern lässt —
pruefe:dokukönnte verlangen, dass jede inCLAUDE.mdgenannte Schranke auch den nötigen Vorlauf nennt
Akzeptanzkriterien
- Die sechs Hexwerte im Code stehen in Einklang mit der Regel, ohne den Code zu ändern
- Wer
CLAUDE.mdvon oben nach unten befolgt, fährt die Suite mit LDAP-Container