Prompt 5 — Spec‑Abgleich (Take 2)

Oder: Warum sich diese Reviews immer anfühlen wie eine Agentur‑Simulation

Diese Spec‑Abgleiche muten immer ein wenig an wie eine Real‑World‑Simulation aus einer Digitalagentur. Der Kunde (die SPEC.md) hat etwas definiert. Der Entwickler (Codex) hat etwas gebaut. Und jetzt sitzen wir da und prüfen, ob beides wirklich zusammenpasst.

Und wie in jeder Agentur‑Woche gibt es natürlich Abweichungen.

Die wichtigste diesmal: Der Logout‑Endpoint fehlte.

Ja, wirklich. Der Auth‑Contract sagt klar: login / logout / me. Aber Codex hatte nur login und me implementiert. Ein klassischer Fall von „SPEC überflogen, nicht gelesen“. Ein Fehler, den Juniors machen. Und Seniors. Und LLMs.

Alles fein – aber das Log möchte ich dir (wer auch immer du bist) nicht vorenthalten.

Was Codex korrigiert hat

1. Fehlender Logout‑Endpoint

Abweichung: POST /api/v1/auth/logout fehlte komplett. Fix: Route ergänzt, Controller‑Logik implementiert.

2. Unvollständiger Session‑Lifecycle

Abweichung:

  • Keine Session‑ID‑Rotation beim Login
  • Kein korrektes Invalidieren beim Logout

Fix:

  • session_regenerate_id(true) beim Login
  • Vollständiges Leeren + Cookie‑Löschen + session_destroy() beim Logout
  • Weiterhin HttpOnly + SameSite=Lax

3. Logging nutzte falsche Request‑Instanz

Abweichung: Das Logging griff auf die ursprüngliche Request‑Instanz zu. Ergebnis: actor_id wurde trotz erfolgreicher Auth als anonymous geloggt.

Fix: Die post‑middleware Request‑Instanz wird jetzt für Logging genutzt.

4. Content‑Negotiation fehlte

Abweichung: Employee‑Responses ignorierten den Accept‑Header. application/json und application/ld+json wurden nicht unterschieden.

Fix: Content‑Negotiation ergänzt, Content‑Type korrekt gesetzt.

Ergebnis der Prüfbereiche

  • Routing: korrekt, alle Auth‑ und Employee‑Routen sauber verdrahtet
  • Auth: Session + Bearer + Scopes, Middleware‑Reihenfolge stimmt
  • Sessions: korrekt gesetzt, inklusive Regeneration und sauberem Logout
  • Employee CRUD: vollständig
  • HTML‑Views: minimal, funktional, spec‑konform

Testing

php -l public/api.php &&
php -l app/Infrastructure/Auth/AuthService.php &&
php -l app/Http/Controller/AuthController.php &&
php -l app/Http/Controller/EmployeeApiController.php

Alles grün.

Commit f86bfe9 wurde erstellt, PR aktualisiert.

Fazit

Diese Spec‑Abgleiche sind der Moment, in dem man merkt, wie nah LLM‑Entwicklung an echter Agenturarbeit ist:

  • Die Maschine macht dieselben Fehler wie Menschen.
  • Sie überliest Dinge.
  • Sie ergänzt Dinge, die nicht gefordert waren.
  • Sie vergisst Dinge, die klar definiert waren.

Und genau deshalb ist VIPe so wertvoll: Der Prozess fängt diese Drift ab, bevor sie sich durch das ganze Projekt frisst.

Weiter geht’s. Prompt 7 wartet.