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

46 lines
2.6 KiB
Markdown

# #026 Zwei Konventionen präzisieren, die strenger klingen als sie gemeint sind
**Status:** erledigt
**Im Tracker:** [#40](https://git.wilde-server.de/florian.wilde/Laufzettel/issues/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](019-betrieb-release.md) 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
- [x] Ausnahme für rohe Hexwerte in `CLAUDE.md` benennen, mit Begründung (in `docs/architektur.md` steht die Regel nicht)
- [x] Den LDAP-Container in `CLAUDE.md` („Vor jedem Commit“) und `README.md` aufnehmen
- [x] 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
- [x] Die sechs Hexwerte im Code stehen in Einklang mit der Regel, ohne den Code zu ändern
- [x] Wer `CLAUDE.md` von oben nach unten befolgt, fährt die Suite mit LDAP-Container