Der Pfad steht in der Allowlist des Proxys, damit ein Healthcheck kein Cookie braucht. Eine Meldung von Prisma oder pg nennt aber Host, Port, Benutzernamen und Datenbanknamen — für etwas, das ohne Anmeldung antwortet, ist das zu viel.
Nach außen bleibt {"status":"fehler"} mit 503, damit Docker und der Reverse Proxy weiter richtig entscheiden; die Begründung geht ins Protokoll des Prozesses, nach demselben Muster, das src/server/actions/verzeichnis.ts schon für unbekannte Ausnahmen benutzt.
Fünf Tests, einer davon für die andere Hälfte der Zusage: dass die Begründung wirklich geschrieben und nicht bloß verschluckt wird. Gegenprobe gefahren — mit der alten Fassung werden drei davon rot, und die Ausgabe zeigt das Leck wörtlich.
#40 — zwei Konventionen, die strenger klangen als gemeint
„Nie auf rohe Hexwerte" hat sechs begründete Ausnahmen: Papier (zwei Druckansichten), ein QR-Decoder (src/lib/qr.ts braucht reines Schwarz auf reinem Weiß) und das Web-App-Manifest samt themeColor, die keine CSS-Variablen vertragen. Sie stehen jetzt als Tabelle mit Begründung je Zeile. Die Regel wurde ergänzt, nicht der Code geändert — eine gemeinsame Konstante über drei unverwandte Dinge hätte die Begründung versteckt.
Der LDAP-Container steht jetzt im Tor vor jedem Commit, in CLAUDE.md und im README. Ohne ihn überspringt die Suite 22 Tests — nachgezählt, nicht geschätzt: 81 mit Container, 59 ohne. Sie sagt es auf stderr, der Lauf sieht trotzdem grün aus. Im README fehlte zusätzlich format:pruefen, das CLAUDE.md seit #010 verlangt.
Damit das hält, auch wenn niemand hinsieht: pnpm pruefe:doku vergleicht die beiden Schranken-Blöcke und verlangt von beiden den Container. Auch hier Gegenprobe gefahren — die Prüfung benennt die Abweichung genau.
Zwei Korrekturen am Issue selbst
Der Abnahme-Review hatte vier Hexwerte genannt und src/lib/qr.ts übersehen; es sind sechs. Und das Issue behauptete, die Regel stehe gleichlautend in docs/architektur.md — tut sie nicht, sie steht nur in CLAUDE.md. Beides im Issue-Text richtiggestellt, statt einen richtigen Haken über falschen Text zu setzen.
Die beiden kleinen Befunde aus der Abnahme zu #19, die noch offen waren.
## #39 — `/api/gesundheit` verrät nichts mehr
Der Pfad steht in der Allowlist des Proxys, damit ein Healthcheck kein Cookie braucht. Eine Meldung von Prisma oder `pg` nennt aber Host, Port, Benutzernamen und Datenbanknamen — für etwas, das ohne Anmeldung antwortet, ist das zu viel.
Nach außen bleibt `{"status":"fehler"}` mit 503, damit Docker und der Reverse Proxy weiter richtig entscheiden; die Begründung geht ins Protokoll des Prozesses, nach demselben Muster, das `src/server/actions/verzeichnis.ts` schon für unbekannte Ausnahmen benutzt.
**Fünf Tests**, einer davon für die andere Hälfte der Zusage: dass die Begründung wirklich *geschrieben* und nicht bloß verschluckt wird. **Gegenprobe gefahren** — mit der alten Fassung werden drei davon rot, und die Ausgabe zeigt das Leck wörtlich.
## #40 — zwei Konventionen, die strenger klangen als gemeint
**„Nie auf rohe Hexwerte"** hat sechs begründete Ausnahmen: Papier (zwei Druckansichten), ein QR-Decoder (`src/lib/qr.ts` braucht reines Schwarz auf reinem Weiß) und das Web-App-Manifest samt `themeColor`, die keine CSS-Variablen vertragen. Sie stehen jetzt als Tabelle mit Begründung je Zeile. **Die Regel wurde ergänzt, nicht der Code geändert** — eine gemeinsame Konstante über drei unverwandte Dinge hätte die Begründung versteckt.
**Der LDAP-Container steht jetzt im Tor** vor jedem Commit, in `CLAUDE.md` und im README. Ohne ihn überspringt die Suite **22 Tests** — nachgezählt, nicht geschätzt: 81 mit Container, 59 ohne. Sie sagt es auf stderr, der Lauf sieht trotzdem grün aus. Im README fehlte zusätzlich `format:pruefen`, das `CLAUDE.md` seit #010 verlangt.
Damit das hält, auch wenn niemand hinsieht: **`pnpm pruefe:doku` vergleicht die beiden Schranken-Blöcke** und verlangt von beiden den Container. Auch hier Gegenprobe gefahren — die Prüfung benennt die Abweichung genau.
## Zwei Korrekturen am Issue selbst
Der Abnahme-Review hatte vier Hexwerte genannt und `src/lib/qr.ts` übersehen; es sind sechs. Und das Issue behauptete, die Regel stehe gleichlautend in `docs/architektur.md` — tut sie nicht, sie steht nur in `CLAUDE.md`. Beides im Issue-Text richtiggestellt, statt einen richtigen Haken über falschen Text zu setzen.
## Tore
`pnpm lint`, `pnpm typecheck`, `pnpm format:pruefen`, `pnpm pruefe:doku` grün. **1136 Vitest-Tests** in 52 Dateien grün (+5).
Closes #39
Closes #40
🤖 Generated with [Claude Code](https://claude.com/claude-code)
/api/gesundheit steht in der Allowlist des Proxys, damit ein Healthcheck kein
Cookie braucht. Eine Meldung von Prisma oder pg nennt aber Host, Port,
Benutzernamen und Datenbanknamen -- fuer einen Pfad, der ohne Anmeldung
antwortet, ist das zu viel.
Nach aussen bleibt {"status":"fehler"} mit 503, damit Docker und der Reverse
Proxy weiter richtig entscheiden. Die Begruendung geht ins Protokoll des
Prozesses, nach demselben Muster wie in src/server/actions/verzeichnis.ts.
Fuenf Tests, darunter einer fuer die andere Haelfte der Zusage: dass die
Begruendung wirklich geschrieben und nicht verschluckt wird. Gegenprobe
gefahren -- mit der alten Fassung werden drei davon rot.
Closes#39
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Die beiden kleinen Befunde aus der Abnahme zu #19, die noch offen waren.
#39 —
/api/gesundheitverrät nichts mehrDer Pfad steht in der Allowlist des Proxys, damit ein Healthcheck kein Cookie braucht. Eine Meldung von Prisma oder
pgnennt aber Host, Port, Benutzernamen und Datenbanknamen — für etwas, das ohne Anmeldung antwortet, ist das zu viel.Nach außen bleibt
{"status":"fehler"}mit 503, damit Docker und der Reverse Proxy weiter richtig entscheiden; die Begründung geht ins Protokoll des Prozesses, nach demselben Muster, dassrc/server/actions/verzeichnis.tsschon für unbekannte Ausnahmen benutzt.Fünf Tests, einer davon für die andere Hälfte der Zusage: dass die Begründung wirklich geschrieben und nicht bloß verschluckt wird. Gegenprobe gefahren — mit der alten Fassung werden drei davon rot, und die Ausgabe zeigt das Leck wörtlich.
#40 — zwei Konventionen, die strenger klangen als gemeint
„Nie auf rohe Hexwerte" hat sechs begründete Ausnahmen: Papier (zwei Druckansichten), ein QR-Decoder (
src/lib/qr.tsbraucht reines Schwarz auf reinem Weiß) und das Web-App-Manifest samtthemeColor, die keine CSS-Variablen vertragen. Sie stehen jetzt als Tabelle mit Begründung je Zeile. Die Regel wurde ergänzt, nicht der Code geändert — eine gemeinsame Konstante über drei unverwandte Dinge hätte die Begründung versteckt.Der LDAP-Container steht jetzt im Tor vor jedem Commit, in
CLAUDE.mdund im README. Ohne ihn überspringt die Suite 22 Tests — nachgezählt, nicht geschätzt: 81 mit Container, 59 ohne. Sie sagt es auf stderr, der Lauf sieht trotzdem grün aus. Im README fehlte zusätzlichformat:pruefen, dasCLAUDE.mdseit #010 verlangt.Damit das hält, auch wenn niemand hinsieht:
pnpm pruefe:dokuvergleicht die beiden Schranken-Blöcke und verlangt von beiden den Container. Auch hier Gegenprobe gefahren — die Prüfung benennt die Abweichung genau.Zwei Korrekturen am Issue selbst
Der Abnahme-Review hatte vier Hexwerte genannt und
src/lib/qr.tsübersehen; es sind sechs. Und das Issue behauptete, die Regel stehe gleichlautend indocs/architektur.md— tut sie nicht, sie steht nur inCLAUDE.md. Beides im Issue-Text richtiggestellt, statt einen richtigen Haken über falschen Text zu setzen.Tore
pnpm lint,pnpm typecheck,pnpm format:pruefen,pnpm pruefe:dokugrün. 1136 Vitest-Tests in 52 Dateien grün (+5).Closes #39
Closes #40
🤖 Generated with Claude Code
/api/gesundheit steht in der Allowlist des Proxys, damit ein Healthcheck kein Cookie braucht. Eine Meldung von Prisma oder pg nennt aber Host, Port, Benutzernamen und Datenbanknamen -- fuer einen Pfad, der ohne Anmeldung antwortet, ist das zu viel. Nach aussen bleibt {"status":"fehler"} mit 503, damit Docker und der Reverse Proxy weiter richtig entscheiden. Die Begruendung geht ins Protokoll des Prozesses, nach demselben Muster wie in src/server/actions/verzeichnis.ts. Fuenf Tests, darunter einer fuer die andere Haelfte der Zusage: dass die Begruendung wirklich geschrieben und nicht verschluckt wird. Gegenprobe gefahren -- mit der alten Fassung werden drei davon rot. Closes #39