Files
Laufzettel/docs/issues/026-konventionen-praezisieren.md
T
Florian Wilde 77389a2c5f
Prüfung / pruefung (push) Canceled after 0s
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s
docs(konventionen): Hexwert-Ausnahmen und LDAP-Container festhalten
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
2026-10-04 16:11:45 +02:00

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.md benennen, mit Begründung (in docs/architektur.md steht die Regel nicht)
  • Den LDAP-Container in CLAUDE.md („Vor jedem Commit“) und README.md aufnehmen
  • Prüfen, ob sich der Hinweis maschinell absichern lässt — pruefe:doku könnte verlangen, dass jede in CLAUDE.md genannte 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.md von oben nach unten befolgt, fährt die Suite mit LDAP-Container