Senkron Erişim İptali (Fail-Closed)
Kural
Membership/role/authority mutation'ı commit olduğunda authoritative-authorization gerçeği ANINDA değişir:
SECURITY DENIAL ≠ WAIT FOR OUTBOX
Outbox/event-akışı yalnız secondary yan-etkiler içindir (cache-invalidation, session-cleanup, notification). Mutation-sonrası ilk korumalı istek eski membership/rol gerçeğiyle geçemez; stale session veya cache yetki kaynağı olamaz. Reactivation restore değildir: askı-öncesi yetkiler sorgusuz geri dönmez, mevcut role/policy üzerinden yeniden değerlendirilir.
Gerekçe
Erişim iptali asenkron kuyruğa bağlanırsa, kuyruk gecikmesi kadar bir "hayalet-yetki penceresi" doğar. Güvenlik kararının doğruluğu altyapı-sağlığına bağlanamaz.
Test edilebilir hükümler
- Revoke/remove/suspend commit'inin hemen ardından (outbox-worker hiç koşmadan) yapılan korumalı istek DENY döner.
- Askıya alınan üyenin açık oturumu, bir sonraki korumalı istekte eski org-context'e erişemez.
- Reactivate sonrası yetki-kümesi "askı-öncesi kopya" değil, güncel role/policy türetimidir (fark-üreten senaryoyla test edilir).
- Outbox-worker'ın durdurulması hiçbir erişim-iptalini geciktirmez (yalnız secondary temizlik gecikir).
Kapsam
Tüm membership/rol/authority mutation'larının erişim-etkisi. Kapsanan UC'ler: UC-OAM-008/009/010/011/013/014 — ownership-transfer (UC-OAM-013) sonrası eski-owner-authority'sinin iptali de bu senkron fail-closed sözleşmeye tabidir. Context-geçiş doğrulaması: CAN-REQ-RULE-020.