docs: CLAUDE.md -- die Arbeitsweise gehoert ins Repo, nicht in ein Gedaechtnis

"Pruefen statt raten" stand bisher nur in einer Notiz auf einer Maschine.
Wer dieses Projekt auf einem anderen Rechner aufmacht, faengt sonst ohne
sie an -- und genau dort wird gleich weitergearbeitet.

Dazu die vier Faelle aus diesem Repo, die erst beim Messen aufgefallen
sind, als Beleg statt als Behauptung: der Einhaengepunkt in c.req.path,
das Sternchen, das kein Parameter ist, das try/catch um createReadStream,
das Secure-Cookie, das ueber localhost funktioniert und ueber eine
LAN-Adresse nicht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 16:31:11 +02:00
co-authored by Claude Opus 5
parent 70210c0363
commit 076d909f62
+44
View File
@@ -0,0 +1,44 @@
# Arbeitsweise in diesem Projekt
## Prüfen statt raten
Nichts annehmen, was sich messen lässt. Verhalten von Bibliotheken, Routen,
Headern und Konfiguration am laufenden System oder in der Dokumentation
**nachsehen**, bevor darauf gebaut wird. Was sich nicht klären lässt: **fragen**,
statt etwas zu bauen, das plausibel aussieht.
Der Grund steht in der Projektgeschichte: eine plausible Annahme, die falsch
ist, fällt Stunden später auf und kostet dann genau die Zeit, die das Nachsehen
gespart hätte. Beispiele aus diesem Repo, alle erst beim Messen aufgefallen:
- `c.req.path` trägt in Hono den Einhängepunkt mit — Löschen und `exists`
sahen deshalb am Ziel vorbei.
- Ein Sternchen wird von Hono nicht als Parameter erfasst, `:pfad{.+}` schon,
und der Parameter kommt bereits dekodiert.
- `createReadStream` meldet eine fehlende Datei asynchron; das `try/catch`
darum fängt nichts.
- Ein Secure-Cookie über `localhost` funktioniert, über eine LAN-Adresse nicht
— wer auf localhost gegenprüft, prüft die Ausnahme.
**Im Bericht steht, was gemessen wurde, nicht was erwartet wurde.** Ungeprüftes
wird als ungeprüft benannt — siehe die Docker-Abschnitte in `ROADMAP.md`.
## Wo es langgeht
`ROADMAP.md` ist der Einstieg: Zuschnitt, Stand, Reihenfolge, offene
Entscheidungen. Das Warum einer Änderung steht in der Commit-Nachricht, nicht
nur im Diff.
## Git
Alles läuft auf **`master`**, keine Feature-Branches. Gehostet auf dem eigenen
Gitea (`https://git.d4rkst3r.de/D4rkst3r/d4rk_media`); Lesen geht anonym,
Schieben über die Umgebungsvariable `GITEA_TOKEN`.
## Die eine Regel fürs Dashboard
**Jeder Knopf gibt Rückmeldung, auch der erfolgreiche.** Das ist der Fehler, an
dem der Fivemanage-Anlauf gescheitert ist: ein Knopf ohne Antwort sieht aus wie
ein kaputter Knopf, und das Ergebnis waren neunzehn gleichnamige
Organisationen. Gilt auch für die API — kaputtes JSON bekommt einen 400 mit
Text, keinen nackten 500.