diff --git a/docs/superpowers/specs/2026-07-27-operator-identity-design.md b/docs/superpowers/specs/2026-07-27-operator-identity-design.md index a100897..0263b7e 100644 --- a/docs/superpowers/specs/2026-07-27-operator-identity-design.md +++ b/docs/superpowers/specs/2026-07-27-operator-identity-design.md @@ -195,12 +195,21 @@ eingebaut, und **protokollierbar** — wer wann wen angesehen hat. - Die Migration **übernimmt** jedes Konto mit Operator-Rolle nach `operators`, samt Passwort-Hash und 2FA-Feldern. Dieselben Zugangsdaten wie bisher — kein Passwortwechsel, kein Aussperren beim Live-Update. -- Danach wird die `users`-Zeile **nur dann** gelöscht, wenn kein Kunde, keine - Plätze und keine Bestellungen daran hängen. Andernfalls bleibt sie stehen, - verliert aber ihre Rollen, und die Migration **meldet**, was sie stehen ließ. -- Rückweg: die Migration ist `down()`-fähig, solange die `users`-Zeilen noch da - sind. Nach dem Löschen verwaister Zeilen ist nur noch der Weg über - `clupilot:create-operator` offen — das steht in der Migration als Kommentar. +- **Die `users`-Zeile wird danach gelöscht.** Wer in `operators` steht, hat in + `users` nichts mehr verloren — das ist der Sinn der Trennung, und eine + zurückgelassene Zeile wäre genau die Vermischung in klein. Entschieden am + 2026-07-27. +- **Eine Ausnahme, und sie löscht nichts:** hängt an der Zeile ein Kunde, ein + Platz oder eine Bestellung, **bricht die Migration ab** und nennt die + betroffene Adresse. Dieser Zustand hieße, dass dieselbe Person Betreiber *und* + zahlender Kunde ist — dann ist nicht die Zeile das Problem, sondern die + Annahme, und ein stilles `delete` nähme Abrechnungsdaten mit. Geprüft: **keines + der beiden Bestandskonten ist in diesem Zustand**, der Abbruch tritt heute + also nicht ein. +- Rückweg: `down()` legt die `users`-Zeilen aus `operators` wieder an — Hash und + 2FA sind ja übernommen, nicht übersetzt. Verloren geht dabei nur, was seit dem + Umzug am Operator entstanden ist (`last_login_at`). Steht als Kommentar in der + Migration. ### Kleine Punkte, im selben Zug