Skip to main content

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-001 temel-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ıkDisposition
sole-owned-orgBLOCK_MANUAL_REVIEW / TRANSFER_REQUIRED
critical-assetTRANSFER_REQUIRED
active-membershipTERMINATE
pending-inviteCANCEL
personal-draft (unpromoted-DC)DELETE_WITH_ACCOUNT / DATA-DISPOSITION
promoted / project-linkedDETACH / RETAIN_BY_POLICY
session / tokenREVOKE
commercial-recordRETAIN_RESTRICTED

5. Trigger-ayrımı (MAJOR-2)

Beş-ayrı trigger, kesişebilir ama AYNI-workflow-değil: ACCOUNT_CLOSURE_REQUESTDATA_SUBJECT_ERASURE_REQUEST (kapatmadan-da-istenebilir) ⊥ ORG_OFFBOARDINGADMIN_CONTRACT_TERMINATIONSECURITY_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_PENDING açık-ara-durum + SLA (CAN-REQ-SCN-001 SLA-eksenini tüket/delege). Erişim-iptali ayrı-gevşek-aşama DEĞİL.
  • Point-of-No-Return (MAJOR-4): DATA_DISPOSITION_STARTED sonrası 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-003 promote-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)

  1. 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).
  2. 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.
  3. Hash + "Silinmiş Kullanıcı" ≠ anonimleştirme — veri başka bilgilerle yeniden-ilişkilendirilebiliyorsa tek-başına anonimleştirme sayılmaz.
  4. İki-prosedür: kullanıcı-silme-talebi ≠ işletme-kapatması (sözleşme-ihlali/güvenlik/sahte-hesap).
  5. Org ≠ Person ≠ Membership ≠ Asset: kurumsal-temsilcinin şirket-adına-hareketi kişisel-veri niteliğini ORTADAN-KALDIRMAZ.
  6. Silme-audit'i de süre-sınırlı (süresiz-audit yok).
  7. 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; motor CAN-DEC-ADR-007 p2_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.