# Re-review — Eğitmen, Ücretler ve Eğitmen Ataması Spec (`docs/specs/egitmen-spec.md`) — 2026-07-28 · R3

> **Review type:** spec-review (re-review)
> **Previous review:** `docs/reviews/review-egitmen-spec-2026-07-28-r2.md` — REJECTED, 5 bulgu
> **Upstream document(s) read:** `docs/arch/mimari-kararlar.md` (AD-09 kapsam cümlesi ve AD-19 benzersizlik kuralı bu turda yeniden okundu; AD-20, AD-23 önceki turlardan) · `cati-dokumani.md` §185 · önceki turların upstream seti geçerli
> **Other cross-referenced documents:** `config/reference_codes.php` (alfabe/prefix kontrolü) · Y-2016/YÖN-2019 doğrulamaları R1'den geçerli
> **Stage locks in effect:** None

---

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

| # | Durum | Kanıt |
|---|---|---|
| R2-1 (§2 giriş cümlesi) | **Kapandı** | spec:37-39 — giriş yeniden yazıldı; kaynak sütununun sözleşmesi açık: `Y-2016`/`YÖN-2019` satırları resmî metinden, `çatı §…` satırları çatıdan ve **madde referansı taşımıyor**; eski toparlayıcı cümlenin neden yanlış olduğu da yazılmış |
| R2-2 (çakışma kaynağı) | **Kapandı — ama düzeltme iki bölüme taşınmamış** | spec:194-203 — tek kural (*"çakışma, atamayı kesinleştiren eylemde kontrol edilir"*), mod tablosu, gerekçe ve kabul edilen bedel (iki kabul mümkün, iki seçim değil; seçim ekranı gösterir) yazılı; K-4 (spec:585) buna göre yeniden yazıldı. ⚠ §6.2'nin ⛔ paragrafı (spec:168) ve K-6 (spec:587) eski modelin diliyle kaldı → **R3-1** |
| R2-3 (K-17 / §7.6 çelişkisi) | **Kapandı** | spec:385-399 — cariye her zaman tam tutar / maliyete yalnız karşılıksız kısım ayrımı gerekçeli; dört durumlu tablo; K-17 (spec:598) nitelenmiş — çifte sayan implementasyon artık kriteri geçemez. ⚠ Tablonun saymadığı beşinci durum → **R3-2** |
| R2-4 (AD-19 benzersizlik) | **Kapandı** | `mimari-kararlar.md:203` — son ek `(yıl, son ek)` uzayında tekilleşir; gerekçe (dönüşümde son ek yeniden üretilemez) ve iki üretim yolunun aynı havuzdan çekmesi yazılı; spec §8.3:540 aynı kuralı taşıyor. Çözüm sorunun her iki şıkkını da kapatıyor — isabetli. ⚠ AD-19:197'deki kapasite notu güncellenmedi → nit |
| R2-5 (AD-09 "sayısal") | **Kapandı — AD tarafında** | `mimari-kararlar.md:99` — *"iş parametresi sayısal olmak zorunda değildir… sınır iş parametresi ↔ yetki/tenant sınırı ayrımıdır, sayı ↔ seçenek ayrımı değil"*; AD-23:353 ile aynı kapsam. ⚠ Spec'in kendi yeniden-anlatımı (spec:357) *"sayısal parametrenin"* demeye devam ediyor → **R3-3** |
| Nit 1 (çatı alıntısı) | **Kapandı** | spec:96 — alıntı revize sonrası metin; *"teklif/mali ekranda"* ifadesinin revize edildiği notuyla |
| Nit 2 (havuz ayarının ekranı) | **Kapandı** | spec:569 — *Planlamacı ayarları* satırına "eğitmen görünürlüğü (havuzum / tümü, §6.3)" eklendi |
| Nit 3 (`PL` prefix'i) | **Kapandı** | spec:538 — kayıtlı olmadığı ve kapanış adresinin plan aşaması olduğu yazılı |

---

## Upstream Coverage Matrix (yeniden üretildi)

Önceki iki turda tek tek doğrulanan ve bu turda değişmeyen satırlar özetlenmiştir; değişen satırlar açık.

| Upstream § / madde | Durum | Kanıt |
|---|---|---|
| çatı §5 · §105-106 · §172 · §174 · §181 · §187 · §219 | ✓ | R2 matrisiyle aynı; bu turda ilgili bölümler değişmedi |
| çatı §185 (revize) | ✓ | spec:96 alıntısı artık güncel metinle eşleşiyor; §4.4 revizyon notu duruyor |
| Y-2016 md.7/3 · md.7/5 · md.8/1 · md.13/j; YÖN-2019 md.6/3-5 | ✓ | R1-R2'de resmî metinden doğrulandı; §2 giriş cümlesi artık kaynak sütununun sözleşmesini doğru anlatıyor (R2-1 kapanışı) |
| fiyatlama-spec §1 · §4.2 | ✓ | değişmedi |
| AD-05 · AD-08 · AD-11 · AD-14 · AD-20 · AD-21 · AD-27 · AD-28 | ✓ | değişmedi |
| **AD-09 (kapsam cümlesi düzeltildi)** | ⚠ | AD tarafı tutarlı (`mimari-kararlar.md:99` ↔ AD-23:353); spec:357'nin yeniden-anlatımı hâlâ *"sayısal parametrenin"* diyor — R3-3 |
| **AD-19 (benzersizlik uzayı eklendi)** | ✓ | `(yıl, son ek)` kuralı istisnanın zorunlu sonucu olarak gerekçeli; spec §8.3 ile birebir. Nit: AD-19:197 *"yıl/tür başına ~330K"* kapasite notu yeni kuralla eskidi (havuz artık yıl başına ortak; ayrıca `config/reference_codes.php` alfabesi 24 değil 28 karakter) |
| AD-23 (havuz + onay omurgası) | ✓ | değişmedi |
| ofis-onyuz-spec | ✓ | değişmedi |
| Spec tanımı — ölçülebilir kabul kriterleri | ⚠ | K-4 yeni kuralla hizalı; **K-6 eski kuralla çelişiyor** — R3-1 |

---

## ✅ What works (bu turda)

- **R2-2'nin çözümü doğru soyutlamada:** "çakışma, atamayı kesinleştiren eylemde kontrol edilir" tek cümlesi iki modu tek kurala bağlıyor; bedelin (`selection`'da çift kabul mümkün, çift seçim değil) açıkça yazılıp ekrana bağlanması, R2'de istenen netliğin tam karşılığı.
- **R2-3'ün dört durumlu tablosu** cari/maliyet ayrımını mekanikleştiriyor; "iki tarafın tutarı aynı olmak zorunda değildir ve bu ayrımın kendisidir" cümlesi yanlış-simetri beklentisini baştan kapatıyor; K-17 artık yanlış implementasyonu eleyecek biçimde nitelenmiş.
- **AD-19 benzersizlik kuralı** zorunluluktan türetilmiş ve iki üretim yolunu tek havuzda birleştirerek R2-4'ün her iki şıkkını da çözüyor — sorulan sorudan daha genel bir cevap.
- **R2-1 kapanışı** yalnız cümleyi düzeltmekle kalmayıp kaynak sütununun okuma sözleşmesini yazıyor — aynı yanlış okuma bir daha üretilemez.

---

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

**R3-1 — R2-2'nin düzeltmesi §6.2'nin ⛔ paragrafına ve K-6'ya taşınmamış; K-4 ile K-6 çelişiyor.** §6.5 (spec:199) `selection` modunda *"kabul serbesttir"* deyip çakışmayı **seçime** koyuyor ve K-4 (spec:585) bunu kriterleştiriyor. Ama §6.2'nin ⛔ paragrafı (spec:168) hâlâ *"**çakışma** ve uygunluk kontrolü `selection` modunda **iki kez** çalışır: **kabul anında** ve seçim anında"* diyor — örneği de eski modelden (*"başka bir eğitimi kabul etmiş olabilir"*: yeni kuralda bekleyen kabul çakışma kaynağı değildir). K-6 (spec:587) aynı cümleyi kriterleştiriyor: *"çakışma ve uygunluk hem kabulde hem seçimde."* İki kabul kriteri aynı davranışın iki farklı okumasını test ettiriyor: kabul anında çakışma kontrolü **var mı** (K-6) **yok mu** (K-4 + "kabul serbesttir")? Aradaki meşru üçüncü okuma da yazılmamış: kabul anında *kesinleşmiş atamalara karşı* erken kontrol + seçimde bağlayıcı kontrol. Hangisiyse, üç metin (§6.2 ⛔, §6.5, K-4/K-6) aynı dille yazılmalı — uygunluğun iki kez değerlendirilmesi (§6.3) tartışmasız, belirsiz olan yalnız çakışmanın kabul bacağı.

**R3-2 — §7.6 tablosunun saymadığı beşinci durum: masraf planlanandan düşük.** Tablo (spec:392-397) eşit / daha yüksek / karşılıksız / `paid_by_company` durumlarını sayıyor; **masrafın planlanan `paid_by_instructor` kaleminden düşük gelmesi** yok. Genel cümleden türetilebilir (karşılıksız kısım = 0 → maliyete sıfır) ama sonucu yazılmamış: planlanan 5.000 maliyette kalır, gerçekleşen 4.000'dir ve §7.2'nin ikinci sorusu ("gerçek kârlılık ne?") bu eğitimde sistematik olarak 1.000 karamsar cevaplanır — negatif sapma hiçbir kayıtta görünmez (§7.3'ün ek maliyeti yalnız artı yönde çalışıyor). Bu bir kabul olabilir (ihtiyatlılık; planlanan tutar değişmez ilkesinin bedeli) — ama dört durumu tek tek sayan bir karar tablosunda beşincinin sonucu ve kabul edilip edilmediği de yazılmalı.

**R3-3 — spec:357 hâlâ "sayısal parametrenin" diyor (R2-5'in spec bacağı).** AD-09:99 düzeltildi (*"iş parametresi sayısal olmak zorunda değildir"*), ama spec §7.4'ün ⛔ paragrafı revizyonu *"değişen tek şey **sayısal parametrenin** genişletilmesinin sonucudur"* diye anlatmaya devam ediyor — spec'in kendi genişletme örneği (`always` → `never`, spec:351) sayısal değil. R2-5'in işaret ettiği belge kayması şimdi AD ile spec arasında: AD'yi okuyan kapsamı doğru, spec'i okuyan dar öğreniyor.

### Nit (blocker değil)

- AD-19:197 kapasite notu (*"~24'lük alfabe → yıl/tür başına ~330K"*) yeni benzersizlik kuralıyla eskidi: havuz artık **yıl başına ortak** (tür başına değil) ve `config/reference_codes.php` alfabesi 28 karakter (28⁴ ≈ 614K/yıl). Hacim binler mertebesinde olduğundan pratik risk yok; not güncellenmeli ki kural ile örneği çelişmesin.

---

## ❓ Open Questions (to be answered before next stage)

1. R3-1'in cevabı: `selection` modunda kabul anında **kesinleşmiş atamalara karşı** çakışma kontrolü var mı (erken filtre + seçimde bağlayıcı kontrol), yoksa çakışma yalnız seçimde mi bakılır? Seçilen okuma §6.2 ⛔, §6.5 ve K-4/K-6'ya aynı dille yazılmalı.
2. R3-2'nin cevabı: planlanandan düşük gelen masrafta kârlılığın planlanan üzerinden (karamsar) raporlanması kabul mü, yoksa negatif sapma da görünür kılınacak mı?

---

## Verdict: ❌ REJECTED

R2'nin beş bulgusu da hedeflenen yerde kapandı ve çözümlerin ikisi (kesinleştiren-eylem kuralı, `(yıl, son ek)` benzersizlik uzayı) sorulandan daha genel, daha sağlam cevaplar. Kalan üç bulgunun ikisi dar metin işi (R3-3 tek ifade, R3-2 tek tablo satırı + bir karar cümlesi); blocker olan R3-1'dir: K-4 ile K-6 bugün iki farklı davranışı kriterleştiriyor ve `selection` modunda kabul anındaki çakışma kontrolünün varlığı — R2-2'nin düzelttiği belirsizliğin bir dikiş ötesi — üç metinde iki dille duruyor. Karar hangi okumaysa üç yere aynı cümle yazıldığında bu spec'in önünde içerikli bir engel kalmıyor; bir sonraki turda matrix yeniden üretilecektir.
