CAN-DEC-ADR-004 — Hesap-Çıkış Orkestrasyon
1. Bağlam
CAN-DEC-ADR-002 (tenantsız-doğum + workspace + membership) ve CAN-DEC-ADR-003 (Karar-Bağlamı) ile kullanıcı-varlıkları çok-boyutludur. "Ayrılma" tek-DB-silme değildir. CAN-REQ-SCN-001 üyelik-yaşam-döngüsü + CAN-REQ-UCG-004 (Hesap-Sayfası UC-09) bu ADR'nin karar-karşılığını bekler. Dış-hukuk-görüşü (KVKK, K191) + CEO-politika (K185/K187) + AI-CEO-inceleme (K194, 4-blocker+7-major) bağlayıcı-hükümlerin temelidir.
2. Karar — ÜÇ-AYRI-LANE orkestrasyonu (BLOCKER-1)
Hesap-çıkışı tek-state-machine DEĞİL, referans-bağlı üç-ayrı-lanedir. Bir-lane'in ilerlemesi diğerini otomatik-tetiklemez; referansla-bağlıdır:
- Lane-A — Üyelik-Offboarding:
MEMBERSHIP_ACTIVE → ACCESS_REVOKED → CRITICAL_ASSETS_RESOLVED → MEMBERSHIP_TERMINATED. 🔴 Personal-hesap YAŞAR (son-org'undan-ayrılan kullanıcının hesabı kapanmaz —CAN-REQ-SCN-001temel-kuralı). (UC-17) - Lane-B — Hesap-Kapatma:
ACCOUNT_ACTIVE → CLOSURE_REQUESTED → DEACTIVATED → ACCESS_REVOKED → DEPENDENCIES_RESOLVED → DATA_DISPOSITION_PLANNED → CLOSURE_IRREVERSIBLE → CLOSED. (UC-21 = future_scope; SCN-003) - Lane-C — Veri-Disposition: kategori-başına
CLASSIFY → DELETE | TRUE_ANONYMIZE | RETAIN_RESTRICTED.
3. Disposition-modeli (BLOCKER-2)
🔴 LEGAL_HOLD TERMINAL DEĞİLDİR. Doğru-model: RETAIN_RESTRICTED → (retention_until/review_at) → final-disposition (DELETE | TRUE_ANONYMIZE). İki saklama-rejimi AYRILIR:
- STATUTORY_RETENTION (yasal-saklama; ticari-işlem-kaydı) ⊥ LEGAL_OR_INVESTIGATION_HOLD (uyuşmazlık/soruşturma).
- Retain-metadata (6-alan):
retention_reason · legal_basis_ref · retention_until · review_at · access_policy · post_retention_action.
4. Bağımlılık-Disposition-Matrisi (MAJOR-1)
🔴 Silme-şartı dependency_count==0 DEĞİL, **"tüm-bağımlılıklar resolved-disposition'a-sahip"**tir. Her bağımlılık-tipi bir disposition alır:
| Bağımlılık | Disposition |
|---|---|
| sole-owned-org | BLOCK_MANUAL_REVIEW / TRANSFER_REQUIRED |
| critical-asset | TRANSFER_REQUIRED |
| active-membership | TERMINATE |
| pending-invite | CANCEL |
| personal-draft (unpromoted-DC) | DELETE_WITH_ACCOUNT / DATA-DISPOSITION |
| promoted / project-linked | DETACH / RETAIN_BY_POLICY |
| session / token | REVOKE |
| commercial-record | RETAIN_RESTRICTED |
5. Trigger-ayrımı (MAJOR-2)
Beş-ayrı trigger, kesişebilir ama AYNI-workflow-değil: ACCOUNT_CLOSURE_REQUEST ⊥ DATA_SUBJECT_ERASURE_REQUEST (kapatmadan-da-istenebilir) ⊥ ORG_OFFBOARDING ⊥ ADMIN_CONTRACT_TERMINATION ⊥ SECURITY_SUSPENSION.
6. Orkestrasyon + invariantlar (MAJOR-3/4/5)
- Access-revoke = deactivation-INVARIANT'ı (MAJOR-3): commit-anında session/refresh-token revocation ZORUNLU + fail-closed. Dağıtık-gecikmede
ACCESS_REVOCATION_PENDINGaçık-ara-durum + SLA (CAN-REQ-SCN-001SLA-eksenini tüket/delege). Erişim-iptali ayrı-gevşek-aşama DEĞİL. - Point-of-No-Return (MAJOR-4):
DATA_DISPOSITION_STARTEDsonrası tam-reactivation garanti-edilemez; reactivate her-aşamada serbest-değil; reactivation eski session/token'ları geri-getirmez. - AccountClosureCase-sözleşmesi (MAJOR-5):
case_id + idempotency_key + step-ledger + retry-safe + manual_review_state + failed_step_resume + point_of_no_return_at + execution_manifest. 🔴 Tek-HTTP-request'te "hepsini-yap" YASAK (adımlı, resume-edilebilir orkestrasyon).
7. Devir = explicit-authorized-transition (MAJOR-6)
Devir sessiz-değil, yetkilendirilmiş-geçiştir; iki-yol:
- user-path: preview → confirm → transfer → audit.
- admin-path: authorized-actor → reason-code → target-authority-validation → transfer → audit → notification-policy.
8. Karar-Bağlamı disposition — 3-sınıf (MAJOR-7)
🔴 "Personal-diye her-DC silinebilir" varsayımı YASAK:
- personal-unpromoted: DELETE / TRUE_ANONYMIZE adayı.
- promoted / project-linked:
CAN-DEC-ADR-003promote-history-KORUNUMU → project-linked ayrı-retention (hesap-kapanışıyla silinmez). - org-owned: hesap-kapanışından bağımsız org-lifecycle.
9. Bağlayıcı hukuk-hükümleri (dil hukuk-destekli — 2-düzeltme)
- Koşulsuz tek-komut hard-delete REDDEDİLİR — veri-kategorisi/yasal-saklama/işletme-varlığı/denetim-izi ayrımlarını güvenli-karşılamaz (kategorik "KVKK-ihlali" yerine bu-ifade).
- Yalnız-pasifleştirme, işleme-amacı-ve-şartları sona-eren kişisel-veriler bakımından gerekli silme/yok-etme/anonimleştirme değerlendirmesinin yerine geçmez.
- Hash + "Silinmiş Kullanıcı" ≠ anonimleştirme — veri başka bilgilerle yeniden-ilişkilendirilebiliyorsa tek-başına anonimleştirme sayılmaz.
- İki-prosedür: kullanıcı-silme-talebi ≠ işletme-kapatması (sözleşme-ihlali/güvenlik/sahte-hesap).
- Org ≠ Person ≠ Membership ≠ Asset: kurumsal-temsilcinin şirket-adına-hareketi kişisel-veri niteliğini ORTADAN-KALDIRMAZ.
- Silme-audit'i de süre-sınırlı (süresiz-audit yok).
- Destructive-op 4-kuralı (K182 → ADR-hükmü): ①affected-row ASSERT (0→DUR+rapor) ②hedef-id re-fetch ③çocuk→ebeveyn RESTRICT-sırası ④beklenti CANLI-son-sayımdan.
10. Hukuk-parametreleri (mekanizma) + izlenebilirlik
Kesin saklama-süreleri/anonimleştirme-yöntemi/kategori-matrisi bu-ADR'de YAZILMAZ → VERİ-ENVANTERİ + SAKLAMA-MATRİSİ (kategori×amaç×süre, avukat-onaylı) = p3_silme_anonimlestirme legal-gate'i; kesin-değer amendment ile.
- upstream:
CAN-DEC-ADR-002·CAN-REQ-SCN-001·CAN-REQ-UCG-004(accepted use_case, UC-09 Hesap-Sayfası). - covers: UC-17, UC-18 (SCN-001 standalone). UC-21 = future_scope (SCN-003 kabulünde amendment).
- Paketler:
p1_pasiflestirme=deployed_verified (DG8 §E.2 TAM-ACCEPT 4/4) ·p2_ownership_transfer_orchestration=queued (devir MOTORU değil ORKESTRASYON; motorCAN-DEC-ADR-007p2_1b_ownership_transfer) ·p3_silme_anonimlestirme=awaiting_legal_gate (saklama-matrisi) ·p4_self_servis_kapatma=queued.
11. Değerlendirilen alternatifler
- 🅐 Tek-komut hard-delete: kategori/legal-hold/RESTRICT-FK yok → red.
- 🅱 Tek-birleşik-state-machine: üç-lane'i tek-zincirde birleştirir → offboarding/closure/disposition karışır (AI-CEO-B1) → red.
- 🅲 Üç-lane referans-bağlı orkestrasyon (KABUL-EDİLDİ — CEO-imza 11 Tem): Lane-A⊥B⊥C + disposition-matris + RETAIN_RESTRICTED-lifecycle. CEO-politika + hukuk-görüşü + AI-CEO destekli.
12. Kabul-kriterleri (13.A ⊥ 13.B)
13.A: A1 üç-lane-ayrımı (tek-makine-değil). A2 LEGAL_HOLD-terminal-değil (RETAIN_RESTRICTED→final). A3 bağımlılık-disposition-matrisi (resolved-disposition, sayaç-değil). A4 5-trigger-ayrımı. A5 AccountClosureCase-sözleşmesi (idempotent+resume+manifest). A6 access-revoke=deactivation-invariant+SLA. A7 point-of-no-return. A8 transfer=explicit-authorized (user+admin-path). A9 DC-3-sınıf (promote-history-korunum). A10 destructive-op-4-kuralı. A11 hukuk-parametreleri=mekanizma. A12 exact-SHA+CEO (parametreler-dolunca-amendment). 13.B: B1 aktif-hesap doğrudan-silinemez. B2 bağımlılık resolved-disposition'suz kapanış-bloke. B3 pasifleştirme geri-dönülebilir (point-of-no-return öncesi). B4 pasif login-YAPAMAZ+oturum-düşer. B5 devir açık+görünür (silent-yok). B6 silme affected-row-ASSERT+RESTRICT-sırası. B7 RETAIN_RESTRICTED erişim-kısıtlı+review_at. B8 promoted-DC hesap-kapanışıyla-silinmez. B9 son-org-ayrılan-hesap YAŞAR.
Kapsam-dışı
Guest-verisi (CAN-REQ-UCG-007) · KVKK export/taşınabilirlik · kesin-saklama-süre-değerleri (saklama-matrisi) · SCN-003 senaryo-yazımı (paralel iş-kuyruğu).
CAN-DEC-ADR-004 · decisions/normative · governance_status: accepted (Human-CEO imza 11 Tem 2026 — "imzalıyorum, kabul edilmiştir"; çift-SHA-künye = extensions.acceptance). Kabul-zinciri TAMAMLANDI: CI-yeşil → Müdür-2.-göz → AI-CEO-delta-PASS (K198) → Verify-ACCEPT-READY (019f50b0) → CEO-imza @ apply-SHA 7e0a970. accepted ≠ effective (yürürlük ayrı-kapı). Dayanak: CEO-politika K185/K187 + dış-hukuk-görüşü K191 + AI-CEO-inceleme K194.