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:
@@ -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.
|
||||||
Reference in New Issue
Block a user