# Review — Müşteri portalı ve teklif dikeyi spec (round 2) — 2026-07-31

> **Review type:** spec-review (re-review)
> **Previous review:** `review-musteri-portali-spec-2026-07-31.md` (REJECTED, 8 bulgu + 2 açık soru + 1 upstream)
> **Upstream document(s) read:** `docs/design/musteri-portali-brainstorm.md` (31 karar; bu oturumda doğrulanmış)
> **Other cross-referenced documents:** `docs/specs/fiyatlama-spec.md` §4.1–4.2, §5 · `cati-dokumani.md` §129 (düzeltilmiş hali okundu), §143, §149–154, §184, §190 · `docs/arch/mimari-kararlar.md` AD-09, AD-27 · `docs/issues.md:41` · `docs/specs/omurga-spec.md` A-5, §3.0–3.2
> **Stage locks in effect:** Brainstorm kararları kilitli.

---

## Önceki bulguların kapanış doğrulaması

| # | Doğrulama |
|---|---|
| S-F1 | ✓ **Kapandı.** §5.2.1 fiyatlama-spec §4.1/§4.2 ile birebir: iki biçimli giriş, iki limit, **engellemez-eskale eder**, **iki seviyeli kontrol** — çift-seviye gerekçesi de taşınmış. M-12 yeniden yazılmış. (c) tespiti dürüst çözülmüş: kural gerçekten `docs/issues.md:41`'de yaşıyor (bağımsız doğrulandı — *"Global backoffice'te, daraltma ofiste, genişletme yasak (AD-09)"*), AD-09 metninde yok; U-2 upstream kaydı doğru |
| S-F2 | ✓ Kapandı. §5.5 çatı §151 ile birebir: onay öncesi uyarı + hash'lenen metne dahil + çok eğitimli teklifte **kalem bazında** (tahsisle tutarlı gerekçe). M-37 |
| S-F3 | ✓ Kapandı. §5.3 çatı §153 ile birebir; "koltuk iki kez sayılır" gerekçesi de doğru. M-38 |
| S-F4 | ✓ Kapandı. §8.4 dört unsur (çatı §143) + beyan-imza çelişkisi davranışı (çatı §190): uyarı, kapı kilidi, gerekçeli insan çözümü. "İkincil kanıtın tek işe yaradığı an" tespiti isabetli. M-40/M-41 |
| S-F5 | ✓ Kapandı — aşağıda soru 2 değerlendirmesi. M-42 |
| S-F6 | ✓ Kapandı. §5.3: sayaçlar kapsam dışı, "olduğundan fazla sanır" sonucu da yazılmış (çatı §149). M-39 |
| S-F7 | ✓ Kapandı. §5.2: kopyalama + liste sürümü + "hash metni korur, fiyat kaynağını korumaz" ayrımı + KDV atfı (fiyatlama-spec §2.3). M-35 |
| S-F8 | ✓ Kapandı. §4.7: kapsam okunur, üç liste sayılmış, gerekçe K-30'a bağlı. M-43 |
| Açık soru 1 | ⚠ K-31/K-32 → §3.3, M-44/M-45 — **bir tanım boşluğuyla**, aşağıda R2-1 |
| Açık soru 2 | ✓ S-F1(c) ile kapandı |
| U-1 | ✓ **Çatı §129 düzeltmesi doğrulandı:** yeni metin *"mevzuat kaydı DAYATMAZ, UYARIR"* + Sets'in gerekçesi + eski cümlenin neden yanlış olduğu not edilmiş. AD-27 ve kırmızı çizgi 14 ile artık tam hizalı; **azami katılımcı istisnası doğru korunmuş** (Y-2016 md.13/ç, TY-2019 md.17/1 — madde atıfları doğru; "onaylayacak merci İdare'dir ve onay ekranında değildir" gerekçesi çatı §163 ile aynı) |

45 kabul kriteri sayıldı: M-1…M-45 eksiksiz, mükerrer yok.

## İstenen kontroller

**1 · Sekiz kapanış tam mı — evet** (yukarıdaki tablo; hepsi kaynağıyla karşılaştırıldı, hiçbiri bellekten onaylanmadı).

**2 · S-F5'in taraf düzeyi çözümü yeterli mi — evet.** "Görünürlük thread düzeyinde değil taraf düzeyinde; her mesaj tarafını taşır" spec düzeyinde doğru soyutlama: müşteri-satışçı tarafı açık, 3E-muhasebe tarafı ve triyaj kapalı; alan tablosu fatura için bildirim durumunu açıkça "görmez" sütununa koymuş. "Tenant leak değildir ama ticari zarardır ve aynı ciddiyetle ele alınır" cümlesi iş görür — plan yazarı bunu policy'siz geçemez. (Eğitime bağlı tedarikçi thread'leri tabloda anılmıyor; ama müşteri tarafı hiç mesaj taşımadığı için taraf kuralı onları zaten kapatıyor — bulgu değil.)

**3 · K-31/K-32 çelişki taraması — davranışlar tutarlı, bir terim tanımsız.** "Eskisi göremez" audit/erişim kurallarıyla çelişmiyor: iş verisi görünürlüğü kapsamdan gelir (AD-23 — kapsamdan çıkan göremez), eski satışçının **ürettiği** kayıtlar ise silinmez ve audit_writes'ta eylem sahipliğiyle durur (omurga-spec A-5: *"geçmiş kayıtlardaki eylem sahipliği değişmez"*); "eskisinin kaydı durur ve devralan görür" tam bu kuralın uygulamasıdır. §2.3 (müşteri onaylayanı pasifleşince sistem otomatik davranır) ile §3.3 (ofis satışçısı pasifleşince sistem davranmaz) asimetrisi de çelişki değil — ilki müşterinin eğitim talebini kaybettirmeme, ikincisi yöneticinin bilinçli kararını ezmeme gerekçesiyle, ikisi de yazılı. Kalan tek sorun R2-1.

**4 · Çatı §129 — yukarıda U-1 satırı: tutarlı, istisna doğru korunmuş.**

**5 · Kalan yarım karar — bulunamadı.** K-9/K-10/K-20/K-22b/çatı §143-149-151-153-190'ın tüm ikinci yarıları artık spec'te; fiyatlama-spec'in beş davranışı (iki biçim, iki seviye, eskalasyon, dondurma, KDV) tamam.

## ⚠️ Findings & Risks (in-scope for this review type)

**R2-1 · §3.3 "hesap kapatma" tanımsız — M-45'in tetikleyicisi belirsiz.** Spec iki ayrı duruma iki zıt davranış bağlıyor: **kapatma** → işler devredilir/havuza aktarılır (zorunlu), **pasifleştirme** → hiçbir şey yapılmaz (yönetimsel karar). Ama sistemin kullanıcı yaşam döngüsünde "kapatma" diye bir durum yok: AD-23 ve omurga-spec A-5 yalnız **silinmez-pasifleştirilir** ikilisini tanır; "kapatma" hiçbir belgede tanımlı değil. Plan yazarı M-45'i implemente edemez çünkü hangi olayın "devret ya da havuza aktar" zorunluluğunu tetiklediği belirsiz: kapatma pasifleştirmenin bir alt türü mü (ör. "ayrılış" işaretli pasifleştirme), ayrı bir yaşam döngüsü durumu mu, yoksa atamaların elle silinmesi mi? K-32'nin niyeti açık; spec'in işi bu terimi mevcut yaşam döngüsüne bağlamaktır — tek paragraf yeter, ama o paragraf olmadan iki zıt davranışın sınırı yorumla çizilir.

**R2-2 · İki bölüm aynı numarayı taşıyor.** "## 12. Upstream'de kapatılması gerekenler" (satır 370) ve "## 12. Kabul kriterleri" (satır 382). U-2'nin "§12'ye taşındı" adresi ve M kriterlerine yapılacak dış atıflar belirsizleşiyor — biri §13 olmalı. (Kozmetik ama adresleme hatası ürettiği için not değil bulgu.)

## ❓ Open Questions

Yok.

## ⚠️ Upstream Findings

- U-2 (AD-09 metin boşluğu) ve U-3 (P-37 revizyonu) spec'in §12'sinde doğru kayıtlı; yenisi çıkmadı.

## Verdict: ❌ REJECTED (dar — iki bulgu: bir tanım paragrafı + bir bölüm numarası)

Sekiz bulgunun sekizi de kaynağıyla doğrulanarak kapandı; S-F1'in düzeltmesi fiyatlama-spec ile birebir ve (c) kısmının "kural var ama AD metni yazmıyor" çözümü ile U-2 kaydı örnek nitelikte dürüst. Çatı §129 düzeltmesi AD-27/kırmızı çizgi 14 ile tam hizalı ve azami katılımcı istisnası doğru korunmuş. K-31/K-32 mevcut kurallarla çelişmiyor. Verdict'i düşüren tek içerik sorunu R2-1: spec'in kendi getirdiği "kapatma/pasifleştirme" ayrımının ilk yarısı sistemde tanımlı bir duruma bağlanmamış — M-45 bu haliyle test edilemez. R2-2 numara düzeltmesidir. İkisi kapanınca spec plan aşamasına hazırdır.
