525f212e39
Plan, Zusammenfassung, Verifikation und STATE.md zum Quick-Vorgang 260921-fi3. Befund: auth.service legt mustChangePassword in den JWT, jwt.strategy liess das Feld beim Auspacken fallen. request.user.mustChangePassword war damit immer undefined und der global registrierte ForcePasswordChangeInterceptor hat seit seiner Einfuehrung nie blockiert. Durchgesetzt wurde der Zwangswechsel allein von der Web-Middleware; jeder Weg daran vorbei umging ihn. Gemessen: eine Sitzung mit mustChangePassword=true erhielt auf GET /users 200 samt vollstaendiger Benutzerliste. Behoben, und belegt bei gleicher Rolle und gleicher Route: GET /modules/active liefert 403 FORCE_PASSWORD_CHANGE mit Zwang und 200 ohne. Neue Spezifikationen gegen den alten Stand 6 von 12 rot, danach 12 von 12 gruen, vom Verifier unabhaengig nachgestellt. Der Browser-Ablauf wurde vollstaendig durchgespielt: niemand wird ausgesperrt, der Wechsel gelingt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TPPB4ApQxzSU1rwV2Ffj9J