# Review — docs/specs/sube-spec.md v0.6 — 20.10.2026

> **Review type:** spec-re-review
> **Previous review:** `docs/reviews/review-sube-spec-re-review-2026-10-20-r3.md` (heyet 818, REJECTED, F-1 — eski faturaların sıralı numara karşısındaki durumu tanımsız). Bu turda yalnız §9.1'e eklenen madde ve kriter 26'nın eki değerlendirildi; diğer bölümler 817/818 brief'lerindeki gibi kilitli.
> **Upstream document(s) read:** `proje-haritasi.md` §4.4 (bu turda ek bir harita girdisi yok; 818'in kendi F-1'i upstream'dir)
> **Other cross-referenced documents:** canlı ortam ölçümü — `ssh root@167.235.48.99`, `/var/www/html/3e-egitim/current` (release `20261020-023247`), bağımsız bir PHP betiğiyle (`App\Models\Invoice::count()`) doğrulandı: **sonuç 0**.
> **Stage locks in effect:** §1–§8, §9.2–§9.5 (bu eklenen madde hariç), §10 kriter 1–25/27, §11–§13'ün eski satırları kilitli (817/818).

---

## Upstream Coverage Matrix

| Upstream § / madde | Reviewed doc'ta durumu | Kanıt |
|---|---|---|
| 818 F-1: production'da kesilmiş fatura sayısının ölçülmesi | ✓ | spec §9.1 "⚠ ölçüldü — production'da kesilmiş fatura yoktur (0, 20.10.2026)" — **bağımsız olarak canlıda doğrulandı**: `/var/www/html/3e-egitim/current`'ta `App\Models\Invoice::count()` = 0 |
| 818 F-1: geriye dönük numara verilip verilmeyeceği | ✓ | spec §9.1 "sıralı numara geriye dönük verilmez; bu faturalar numarasız kalır ve belgede «numarasız (eski kayıt)» basılır" — net, tek bir kural, köşe durumu kapatıyor |
| 818 F-1: serinin başlangıç noktası (eski kayıtlar seriyi kaydırır mı) | ✓ | spec §9.1 "Her şirketin serisi kendi ilk faturasında 1'den başlar" — eski kayıtlar seriyi etkilemiyor, kriter 26'da "ve seriyi etkilemez" ile tekrar test edilmiş |
| 818 F-1: eski (numarasız) faturanın iptal/yeniden kesim döngüsündeki davranışı | ✓ | spec §9.1 "Numarasız eski faturanın iptali yeni bir numara doğurmaz; yerine kesilen fatura normal sırayla numara alır" — §9.2'nin genel iptal+yeniden kesim mekanizmasıyla çelişmeden özel durumu kapatıyor |

---

## ✅ What works

- **818'in F-1'i tam ve doğrulanabilir şekilde kapandı.** Ölçülen rakamı (production'da 0 fatura) kendim bağımsız olarak canlı sunucuda çalıştırdım; spec'in iddiası doğru. Bu, "Sets ölçtü dedi" diye kabul edilmiş bir iddia değil, bu review'da ayrıca kontrol edilmiş bir gerçek.
- **Kural tek ve çelişkisiz:** geriye dönük numara yok → numarasız kalır → belgede açıkça işaretlenir → seri bundan etkilenmez → eski kaydın iptali yeni numara üretmez, yerine kesilen fatura normal akışa girer. Dört alt durumun hepsi tek paragrafta, birbiriyle çakışmadan kapatılmış.
- §9.2'nin "kesildiği anda sabitlenir / iptal + yeniden kesim" genel mekanizmasıyla yeni kural arasında sürtüşme yok: eski faturalar için özel durum yalnız "numara" alanına dar bir istisna getiriyor, şirket/gelir şubesi sabitleme kuralına dokunmuyor.
- Kriter 26'nın eki (“Bu özellikten önce kesilmiş fatura numarasız kalır, belgede «numarasız (eski kayıt)» basılır ve seriyi etkilemez”) §9.1'in prose'uyla birebir örtüşüyor ve ölçülebilir.
- Değişiklik dar: yalnız §9.1'e bir paragraf ve kriter 26'ya bir cümle eklenmiş; diğer bölümler dokunulmamış, yeniden açılmamış.

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

Yok.

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

1. (817'den devam eden, blocker değil) §12'deki "fiyat listesi tektir" satırı hâlâ tarih+alıntı formatını taşımıyor.

## Previous Findings Status

- 818 F-1: ✅ Resolved — §9.1 yeni paragraf, kriter 26 eki; production rakamı bu review'da bağımsız doğrulandı.
- 817 (APPROVED, 0 bulgu): dokunulmayan bölümler değişmedi.

## ⚠️ Upstream Findings

Yok.

## Verdict: ✅ APPROVED

Matrix'te ❌/⚠ satır yok. 818'in tek bulgusu, hem spec metninde hem canlı ortamda bağımsız olarak doğrulanan bir ölçümle ve tek/çelişkisiz bir kuralla kapandı. Bu turun dar kapsamlı eklentisi yeni bir çelişki üretmedi. Spec, tüm turlardaki bulgular (815'in sekizi + 816'nın biri + 818'in biri) kapanmış olarak plan aşamasına geçmeye hazır; geriye kalan tek kalem (fiyat listesi alıntısı, §12) blocker değil, açık soru olarak not edildi.
