Files
kolaytercih/docs/gece-vardiyasi/2026-09-22/31-guvenlik-satici-kimligi.md
bilalgursen 2b350d0c5d content(rehber): gece vardiyasının 14 yeni yazısı + 2 düzeltme, ekip raporları ve kurallar
14 yeni rehber yazısı (hepsi editör denetiminden geçti, 46 yazıda 829 iç link
tarandı, 0 kırık hedef; 180+ DB rakamı yazıların kendi filtreleriyle yeniden
koşuldu):

  taban-siralamalari-alti-yilda-nasil-degisti · kac-net-ile-hangi-bolum ·
  siralama-bandlari-hangi-kapilar-acilir · ayni-bolum-farkli-universite-siralama-farki ·
  hangi-bolumlerin-kontenjani-azaldi · yeni-acilan-bolumler-nasil-degerlendirilir ·
  bilgisayar-mi-yazilim-muhendisligi-mi · kktc-universiteleri-okunur-mu ·
  yapay-zekaya-tercih-sordum-guvenilir-mi · ek-madde-1-puanim-yetiyor-mu ·
  universitede-ilk-hafta-ders-kaydi-muafiyet-kayit-dondurma · yks-2027-takvimi ·
  rehber-ogretmenler-icin-veri-kaynaklari · bolumumu-sevmedim-hangi-kapilar-var

İki canlı yazı düzeltildi:
- veliler-icin-tercih-rehberi: veli diliyle kapanış; altındaki "sıralamanı gir"
  kutusu artık veliye ölü uç değil
- bos-kontenjanlar-ne-anlatiyor: "birkaç yüz kişilik fark" aslında ~9 bin
  (ÖSYM 265.356 ↔ bizim 256.532); payda açıklaması tersti — ek kontenjan
  paydaya girseydi oran düşerdi. guncelleme alanı eklendi (sitemap lastmod).

Kurallar (AGENTS.md):
- Yayın sonrası arama motoru bildirimi: URL denetimi yalnız canlıda 200 dönen
  adrese; kota sayacı; mülk/hesap notu; sitemap grep kuralı
- Yıkıcı git komutları yasak: reset/checkout --/restore/clean/stash
- Tarayıcı açma: tasarımcı ve UX gerekli gördüğünde açabilir (yetenek için
  .claude/agents/tasarimci.md'ye tarayıcı araçları eklendi)

docs/gece-vardiyasi/2026-09-22/ — 34 rapor: CEO kararları ve kapanış turu,
marka/ödeme analizi, sıfır ödeme teşhisi, SEO konu planı, veri kalitesi,
editör denetimi, CTO şartnamesi, yazılımcı ve güvenlik raporları, SABAH-OZETI.

docs/ekip/YAYIN-KUYRUGU.md — Search Console bildirim kuyruğu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 23:25:34 +03:00

297 lines
39 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 31 — Güvenlik & uyum: satıcı kimliği (A8), G3'ün delta-0 ledger satırı, iki kısa uyum kontrolü
> Rol: `guvenlik-uyum` · Gece vardiyası, 22 Eylül 2026 · Okuyucu: CTO (şartname eki) → CEO → sabah Bilal
> Yöntem: yalnız okuma. Kod okundu, **hiçbir kod/içerik dosyasına dokunulmadı**; bu rapor dışında dosya oluşturulmadı.
> Mevzuat kaynakları resmigazete.gov.tr'den **tam metin olarak indirildi ve okundu** — aşağıda madde madde alıntılı.
> İşaretler: **[D]** doğrulandı (dosya:satır / mevzuat metni) · **[Ç]** koddan çıkarım · **doğrulanmalı**
> Hukuki değerlendirme taslaktır: **avukat/mali müşavir teyidi gerekir.** Metin değişikliği her zaman `[BİLAL]`.
---
## Özet (5 madde)
1. **KRİTİK — Bu vardiyada yapılan işin bir kısmı çalışma ağacından silindi ve hiçbir commit'te yok.** Oturumumun başında `git status` dört dosyayı `M` gösteriyordu (`AGENTS.md`, `docs/ekip/KARARLAR.md`, `docs/ekip/BACKLOG.md`, `content/rehber/veliler-icin-tercih-rehberi.md`); rapor yazarken aynı dosyalar **temiz**, içerikleri HEAD'e dönmüş. `git reflog`'da `HEAD@{2}: reset: moving to HEAD~1` var [D] ve o resetin ardından hiçbir commit bu dosyalara dokunmuyor [D]. `git fsck --lost-found` içindeki dangling blob'ların hiçbirinde kayıp içerik yok [D] — yani **git'ten geri alınamaz**. Somut kayıp: KARARLAR.md'deki iki adet 22 Eylül karar kaydı, AGENTS.md'ye eklenen Search Console bölümü, veli yazısının yeni kapanışı + karşılaştırma tablosu, BACKLOG güncellemesi. İki karar kaydının **tam metni bu raporun §5 ekinde** duruyor (oturumumun ilk okumasından); diğerleri yeniden yazılmalı. Bu, CEO'nun aynı gece koyduğu C2 kuralının ve PROTOKOL md.3'ün ihlalidir.
2. **A8 için yeni sayfa GEREKMİYOR — mevzuat zaten yeri söylüyor: "iletişim" başlığı.** Yürürlükteki yönetmelik (RG 29.12.2022/32058, MADDE 5/1) satıcı kimliğini *"kendine ait elektronik ticaret ortamının ana sayfasında doğrudan ulaşılabilecek şekilde **'iletişim' başlığı altında**"* istiyor [D]. Bizde `/iletisim` sayfası var, başlığı zaten "İletişim" ve footer'dan her sayfada linkli (`src/components/site-footer.tsx:151-156`, ana sayfada `src/app/page.tsx:659`) [D]. Yani **tek iş: mevcut `/iletisim` sayfasına bir blok eklemek.** Kurucunun "sade" talimatına birebir uyuyor; `/hakkinda` benzeri yeni yüzey açmaya gerek yok.
3. **Bilal'in dolduracağı alan 5 — ama CEO'nun listesindeki alanlar tam olarak bunlar değil.** CEO "unvan, adres, vergi dairesi/no, MERSİS" demişti; yönetmelik **vergi dairesi adını istemiyor**, buna karşılık **telefon numarası ve KEP adresini zorunlu tutuyor** [D]. Ayıklanmış 5 alan: ① ticaret unvanı **veya** ad-soyad, ② merkez (iş yeri) adresi, ③ MERSİS no *(tacir)* **ya da** vergi kimlik no *(esnaf)* — tek alan, ④ telefon numarası, ⑤ KEP adresi. E-posta zaten var (`destek@kolaytercih.com`). Kopyalanmaya hazır metin §1.4'te, şahıs/şirket iki varyantıyla.
4. **G3'ün delta-0 satırı muhasebeyi de idempotency'yi de bozmuyor; tek gerçek risk iade dalı — ve orada sızıntı garanti.** `listeRevize` zaten `hasPaket` kapısının arkasında (`rapor-actions.ts:256`) olduğu için G3'ten sonra **her başarısız revizyon istisnasız 3 bedava kredi** yazar; `revisionCount` yalnız başarıda arttığı için MAX_REVIZYON tavanı, requestId her denemede tazelendiği için de UNIQUE kısıtı bu döngüyü durdurmaz [D]. Karar ve tek paragraflık gerekçe §2'de.
5. **Aynı mevzuat taramasında, satıcı kimliğinin yanında üç zorunluluk daha eksik çıktı** (hepsi grep = 0): "işlem rehberi" başlığı (Yön. m.7), **sipariş teyidi bildirimi** (Yön. m.9 — ödeme sonrası alıcıya e-posta/SMS **zorunlu**, bu T5'i "tetik"ten "yükümlülük"e taşır), ve ön bilgilendirmede cayma istisnası + tüketici hakem heyeti cümlesi (Mesafeli Sözleşmeler Yön. m.5/1-h ve -k). Ayrıca **ETBİS kaydı** faaliyete başlamadan önce zorunlu (Tebliğ m.5/1-a) [D]. Bunlar Bilal'e yeni soru üretmiyor — §1.5'te kime düştüğü yazılı.
---
## 0 · Kritik bulgu: çalışma ağacında veri kaybı (bu gece, benim oturumum sırasında)
### Kanıt
| Zaman | Gözlem | Kaynak |
|---|---|---|
| Oturum başı | `M AGENTS.md`, `M content/rehber/veliler-icin-tercih-rehberi.md`, `M docs/ekip/BACKLOG.md`, `M docs/ekip/KARARLAR.md` | Görev metnindeki `gitStatus` anlık görüntüsü |
| Oturum başı + ~2 dk | `tail -n 150 docs/ekip/KARARLAR.md` → dosyada **iki adet 22 Eylül kaydı** vardı | Bu oturumun ilk okuma çıktısı [D] |
| Rapor yazarken | `grep -c "^## 2026-09-22" docs/ekip/KARARLAR.md` = **0**; `git status --porcelain -uno` = **boş** | [D] |
| — | `git reflog`: `HEAD@{2}: reset: moving to HEAD~1` | [D] |
| — | Reset sonrası commit'lerin hiçbiri bu 4 dosyaya dokunmuyor (`git show --stat` × 8 commit) | [D] |
| — | `git fsck --lost-found`: 9 dangling nesne; AGENTS.md adayları **29 satır ve Search Console içermiyor**, KARARLAR adayları 21 Eylül'de bitiyor | [D] |
**Okuma [Ç]:** aynı çalışma ağacında çalışan kod ajanı `git reset --hard HEAD~1` (veya eşdeğeri) koştu. Untracked dosyalar (yeni rehber yazıları, `docs/gece-vardiyasi/`) sağ kaldı; **izlenen dosyalardaki commit'lenmemiş değişiklikler yandı.** Bu, kod ajanının kendi işini değil, başkasının işini sildi.
### Ne kaybedildi, ne kurtarılabilir
| Dosya | Kaybolan iş | Kurtarma |
|---|---|---|
| `docs/ekip/KARARLAR.md` | 2 adet 22 Eylül karar kaydı (sevk sırası P1–P5; `/sonuc` önizlemesi ve yeniden tasarımların ertelenmesi) | **Tam metin §5'te** — kopyala-yapıştır |
| `AGENTS.md` | Search Console bölümü (kota sayacı + sitemap kuralı) | `docs/gece-vardiyasi/2026-09-22/25-seo-duzeltme.md` §2 kuralın **gerekçesini ve iki ayağını** anlatıyor; metin oradan yeniden yazılabilir |
| `content/rehber/veliler-icin-tercih-rehberi.md` | Veli dilli kapanış + karşılaştırma tablosu (`grep "birlikte doldurmanız"` = 0, tabloya ait `^|` satırı = 0) | `21-yazar-veli-kapanisi.md` yalnız **özet + 1 alıntı cümle** taşıyor → **yazının kendisi yeniden yazılmalı** |
| `docs/ekip/BACKLOG.md` | 22 Eylül güncellemesi | `urun-yoneticisi`'nin backlog senkronu turunda (D-13) yeniden üretilir |
### Öneri (yeni Bilal maddesi değil; süreç maddesi)
- **Şimdi:** §5'teki iki karar kaydı KARARLAR.md'ye geri yapıştırılsın (sahibi `ceo`/orkestratör).
- **Bu gece:** C2 kuralına tek cümle eklensin → *"Kod ajanı `git reset --hard`, `git checkout -- <yol>`, `git clean`, `git stash` kullanamaz; dal değiştirmesi gerekiyorsa önce `git status -uno` boş olmalıdır."* Mevcut C2 "dokunma" diyor ama **dokunmadan da silinebileceğini** söylemiyor; bu gece tam olarak o oldu.
- **Kalıcı:** gece vardiyasında `docs/` ve `content/` yazan ajanlar işlerini **commit'siz bırakmasın**; en azından `git stash create` değil, kendi dalında lokal commit. (Untracked dosyalar bu geceki resetten sağ çıktı — kayıp yalnız izlenen dosyalarda oldu.)
---
## 1 · Görev 1 — Satıcı kimliği (A8)
### 1.1 Mevzuat: neyi kim zorunlu tutuyor (resmî metinden)
**Kaynak A — Elektronik Ticaret Aracı Hizmet Sağlayıcı ve Elektronik Ticaret Hizmet Sağlayıcılar Hakkında Yönetmelik**, Ticaret Bakanlığı, **RG 29.12.2022 / 32058** [D — tam metin indirildi]. *Not: 2015 tarihli eski yönetmelik bu metnin **MADDE 34** ile yürürlükten kaldırılmıştır [D]; internette dolaşan "2015 yönetmeliği" özetleri artık geçersiz.*
> **MADDE 5- (1)** ETHS, kendine ait elektronik ticaret ortamının ana sayfasında doğrudan ulaşılabilecek şekilde **"iletişim" başlığı altında** aşağıdaki bilgileri eksiksiz olarak bulundurur:
> a) **Tacir için** ticaret unvanı, MERSİS numarası ve merkez adresi; **esnaf ve sanatkâr için** adı ve soyadı, vergi kimlik numarası ve merkez adresi.
> b) **KEP adresi, elektronik posta adresi, telefon numarası** ve varsa işletme adı ile tescilli markası.
> c) Mensubu olduğu meslek odası, meslekle ilgili davranış kuralları ve bunlara elektronik olarak ne şekilde ulaşılabileceğine ilişkin bilgiler.
ETHS tanımı (m.4/h): *"…**kendine ait elektronik ticaret ortamında** mal veya hizmetlerinin teminine yönelik sözleşme yapan ya da sipariş alan hizmet sağlayıcı"* → KolayTercih birebir bu [D]. Kapsam dışı sayılanlar listesi (m.2/2) bankalar, sigorta, şans oyunları vb.; bizi kapsam dışına çıkaran bir istisna **yok** [D].
**Kaynak B — Mesafeli Sözleşmeler Yönetmeliği**, **RG 27.11.2014 / 29188**, MADDE 5 (ön bilgilendirme) [D — tam metin indirildi]. Sözleşme kurulmadan önce **tamamı** verilmek zorunda olanlardan bizde eksik olanlar:
| Bent | Zorunlu bilgi | Bizde |
|---|---|---|
| a | Mal/hizmetin temel nitelikleri | **var** (`/kosullar` "Hizmetin kapsamı", `/paket`) |
| **b** | **Satıcı/sağlayıcının adı veya unvanı, varsa MERSİS numarası** | **YOK** (grep = 0) |
| **c** | **Açık adres, telefon numarası ve benzeri iletişim bilgileri** | **kısmen** — yalnız e-posta (`src/app/iletisim/page.tsx:26-33`) |
| ç | Şikâyet için farklı iletişim bilgisi varsa | yok (gerek de yok, aynı adres) |
| **d** | **Tüm vergiler dâhil toplam fiyat** | fiyat var, **"KDV dâhil" ibaresi yok** (grep `kdv` = 0) |
| f | Ödeme/ifa bilgileri | var |
| g | Cayma hakkının şartları, süresi, usulü | var (`/kosullar#iade`) |
| ğ | Cayma bildiriminin yapılacağı açık adres/e-posta | e-posta var, adres yok |
| **h** | **m.15 uyarınca cayma hakkının kullanılamadığı hâllerde bu bilgi** | **YOK** |
| **k** | **Tüketici Hakem Heyeti / Tüketici Mahkemesine başvurabileceği bilgisi** | **YOK** |
m.15/1 ilgili bentleri [D]: *"ğ) Elektronik ortamda anında ifa edilen hizmetler veya tüketiciye anında teslim edilen gayrimaddi mallara ilişkin sözleşmeler"* ve *"h) Cayma hakkı süresi sona ermeden önce, tüketicinin onayı ile ifasına başlanan hizmetlere ilişkin sözleşmeler"*. Yani **hukuken cayma hakkı vermek zorunda değiliz**; `/kosullar`'daki 14 günlük koşulsuz iade mevzuatın üstünde, gönüllü bir taahhüt — iyi, korunmalı. Ama **"kanunen cayma hakkın yok, buna rağmen biz 14 gün veriyoruz"** cümlesinin yazılması m.5/1-h gereği zorunlu.
**Kaynak C — Elektronik Ticaret Bilgi Sistemi ve Bildirim Yükümlülükleri Hakkında Tebliğ**, **RG 11.08.2017 / 30151**, MADDE 5/1 [D]:
> *"(1) Aşağıda belirtilen gerçek veya tüzel kişiler **faaliyete başlamadan önce ETBİS'e kayıt olur**: a) **Kendilerine ait elektronik ticaret ortamında faaliyet gösteren hizmet sağlayıcılar.** …"* — kayıt için girilen bilgi: *"Gerçek veya tüzel kişi tacirler için MERSİS numarası ve vergi kimlik numarası, esnaf ve sanatkârlar için T.C. kimlik numarası ve vergi kimlik numarası"* + alan adı.
→ **KolayTercih ödeme alıyor ve ETBİS kaydı gerektiren tarife birebir uyuyor.** Tebliğin sonraki değişiklikleri **doğrulanmalı** (2017 metni okundu; 2022–2023 e-ticaret paketinden sonra güncellenmiş olabilir). Sitede gösterilmesi gereken bir "ETBİS rozeti/bandı" yükümlülüğü **bu metinde yok** — uydurmuyorum, aramada çıkmadı [D].
### 1.2 Şahıs mı şirket mi — hangi alan değişir
Mevzuat "şahıs/şirket" değil **tacir / esnaf-sanatkâr** ayrımı yapıyor. Pratik karşılığı:
| Durum | ①Kim | ②Adres | ③Numara | ④Telefon | ⑤KEP | Meslek odası (m.5/1-c) |
|---|---|---|---|---|---|---|
| **Şahıs işletmesi — esnaf ve sanatkâr** (esnaf odasına kayıtlı) | **Ad ve soyad** | İş yeri (merkez) adresi | **Vergi kimlik numarası** | zorunlu | zorunlu | Esnaf ve sanatkârlar odası adı |
| **Şahıs işletmesi — tacir** (ticaret siciline kayıtlı) | **Ticaret unvanı** (ör. "Bilal Gürşen — KolayTercih") | Ticaret siciline tescilli merkez adresi | **MERSİS numarası** | zorunlu | zorunlu | Ticaret odası adı |
| **Limited / anonim şirket** | **Ticaret unvanı** (…Ltd. Şti.) | Tescilli merkez adresi | **MERSİS numarası** | zorunlu | zorunlu | Ticaret odası adı |
| **Hiç kaydı olmayan gerçek kişi** | — | — | — | — | — | — |
**Son satır hakkında uyarı:** 2022 yönetmeliğinin m.5/1'inde — 2015'teki hâlinin aksine — *kendi sitesinde satış yapan* "tacir veya esnaf olmayan" hizmet sağlayıcı için bir fıkra **yok** [D]; süreklilik arz eden, kazanç amaçlı satış zaten ticari faaliyet sayıldığı için vergi mükellefiyeti doğurur. Yani "hiçbir kaydı olmayan gerçek kişi olarak satmaya devam etmek" mevzuatın öngördüğü bir seçenek değil. **Mali müşavir teyidi gerekir** — bu cümle hukuki görüş değil, metinden okunan bir boşluk tespitidir.
**Pratik sonuç:** üç geçerli durumda da **alan sayısı 5** ve yalnız ①/③ değişiyor. Bu yüzden aşağıdaki taslak tek metin; Bilal hangi satırı yazacağını `TODO-BILAL` notundan seçiyor.
### 1.3 Nereye konacak — yeni sayfa gerekmiyor
| Ne | Nereye | Neden |
|---|---|---|
| **Satıcı kimliği bloğu (5 alan)** | **`src/app/iletisim/page.tsx`** — mevcut `<h1>İletişim</h1>`'in altına, e-posta butonunun **altına**, "Kart bilgini asla e-postayla paylaşma" notunun üstüne | Yönetmelik m.5/1 bilgileri **"iletişim" başlığı altında** istiyor; sayfa zaten bu adı taşıyor ve `SiteFooter` sayesinde **ana sayfa dâhil 12 sayfada** doğrudan linkli (`site-footer.tsx:151-156`, `page.tsx:659`) [D]. Yeni sayfa açmak hem gereksiz hem de mevzuatın istediği başlıktan uzaklaştırır |
| **`/kosullar`'a 3 cümle** | `src/app/kosullar/page.tsx` — "Ücretlendirme" bölümünün sonuna 1 cümle, "İade ve cayma" bölümünün başına 2 cümle | Mesafeli Sözleşmeler Yön. m.5/1-b, -d, -h, -k boşlukları. Yeni bölüm bile değil, mevcut `<section>`'ların içine cümle |
| **Footer** | **değişiklik gerekmiyor** | "İletişim" linki zaten her sayfada, `Yasal sayfalar` nav'ında (`site-footer.tsx:151-156`) [D] |
| **Gizlilik** | `src/app/gizlilik/page.tsx` — "Hangi verileri işliyoruz?" bölümünün başına 1 cümle | KVKK aydınlatmasında **veri sorumlusunun kimliği** bulunmak zorundadır; bugün gizlilik metni de veri sorumlusunu adlandırmıyor [D]. Aynı 5 alandan besleniyor, ek bilgi istemiyor |
### 1.4 Kopyalanmaya hazır metin
> Yazılımcıya not: bunlar **düz metin**tir. `/iletisim` ve `/kosullar` sayfalarındaki mevcut `<section>` + `<h2 className="font-heading text-lg font-bold text-slate-900">` desenini kullan; yeni bileşen, yeni badge, yeni kart tasarlama. Tarih satırı `/kosullar`'daki "Son güncelleme" satırıyla aynı biçimde.
#### (A) `/iletisim` — yeni bölüm: "Satıcı bilgileri"
```
Satıcı bilgileri
Unvan: TODO-BILAL: Ticaret unvanın (ör. "Bilal Gürşen — KolayTercih"); şirket değil de esnaf/sanatkâr olarak kayıtlıysan ad ve soyadın
Adres: TODO-BILAL: İş yeri (merkez) adresin — mahalle/cadde/no, ilçe, il, posta kodu
TODO-BILAL: Tacirsen "MERSİS No: ……" satırı; esnaf ve sanatkârsan "Vergi Kimlik No: ……" satırı (yalnız biri yazılır)
Telefon: TODO-BILAL: Alıcının sana ulaşabileceği telefon numarası
KEP adresi: TODO-BILAL: Tebligata elverişli KEP adresin (PTT'den alınır)
E-posta: destek@kolaytercih.com
Bu sayfadaki bilgiler, 29/12/2022 tarihli ve 32058 sayılı Resmî Gazete'de yayımlanan
Elektronik Ticaret Aracı Hizmet Sağlayıcı ve Elektronik Ticaret Hizmet Sağlayıcılar
Hakkında Yönetmelik uyarınca yayımlanmaktadır.
```
**Alan sayısı: 5.** (E-posta zaten kodda, mevzuat atfı sabit.)
Ayıklananlar ve gerekçeleri: *vergi dairesi adı* → yönetmelik VKN istiyor, daire adını istemiyor, piyasa alışkanlığı; *işletme adı / tescilli marka* → "varsa" (m.5/1-b), tescil yoksa yazılmaz, `marka` ajanının A9 raporu sonuçlanınca bakılır; *meslek odası* → kayıt olunan odaya göre tek satır, Bilal ③'ü yazarken aynı belgeden okuyacağı için ayrı soru sayılmadı; **yazılırsa** "Meslek odası: …" satırı aynı bloğun sonuna eklenir.
#### (B) `/kosullar` → "Ücretlendirme" bölümünün sonuna eklenecek cümle
```
Satıcı bilgileri (unvan, adres, vergi/MERSİS numarası ve iletişim) iletişim sayfasında
yer alır. Paket fiyatı, tüm vergiler dâhil toplam bedeldir.
```
*("iletişim sayfasında" ifadesi `/iletisim`'e link olacak — `/kosullar`'daki mevcut `<Link className="text-primary underline">` deseniyle.)*
#### (C) `/kosullar` → "İade ve cayma" bölümünün **başına** eklenecek iki cümle
```
Paket, elektronik ortamda anında ifa edilen bir hizmettir; Mesafeli Sözleşmeler
Yönetmeliği'nin 15 inci maddesi uyarınca bu tür sözleşmelerde kanunen cayma hakkı
bulunmaz. Buna rağmen aşağıdaki koşullarda 14 günlük koşulsuz iade hakkını kendi
irademizle tanıyoruz.
```
#### (D) `/kosullar` → en sona eklenecek yeni bölüm (tek cümle)
```
Uyuşmazlık hâlinde
Satın alımından doğan uyuşmazlıklarda, parasal sınırlara göre yerleşim yerindeki
Tüketici Hakem Heyetine veya Tüketici Mahkemesine başvurabilirsin.
```
#### (E) `/gizlilik` → "Hangi verileri işliyoruz?" paragrafının **başına** eklenecek cümle
```
Bu metindeki işlemler bakımından veri sorumlusu, iletişim sayfasında unvanı ve adresi
yayımlanan KolayTercih satıcısıdır.
```
> Böylece Bilal'in doldurduğu 5 alan **tek yerde** duruyor; diğer üç sayfa ona atıf yapıyor. Bilgi değişirse tek dosya güncelleniyor (yönetmelik m.5/5: değişiklikler değişikliğin olduğu gün güncellenir — tek kaynak bunu da kolaylaştırıyor).
### 1.5 Aynı taramada çıkan, Bilal'e soru üretmeyen zorunluluklar
| Ne | Mevzuat | Bugün | Kime |
|---|---|---|---|
| **"İşlem rehberi" başlığı** — sözleşmenin kurulması için teknik adımlar, sözleşmenin saklanıp saklanmayacağı, hata düzeltme araçları, varsa alternatif uyuşmazlık çözümü | Yön. **m.7/1**, ana sayfadan doğrudan ulaşılabilir "işlem rehberi" başlığı altında [D] | grep `işlem rehberi` = **0** | `cto` → `yazilimci`. `/kosullar`'a üçüncü bir bölüm olarak yazılabilir, **yeni sayfa gerekmez**; içerik hazır: sıralama → sihirbaz → giriş → paket → iyzico |
| **Sipariş teyidi** — "siparişi aldığını, ortam üzerinden **ve ayrıca** e-posta, SMS veya telefondan en az biriyle gecikmeksizin alıcıya bildirir" | Yön. **m.9/1** [D] | `/odeme/sonuc` ekranı var ama **alıcıya e-posta yok** (`src/lib/eposta.ts` yalnız magic-link + kredi hatırlatma) [D] | **T5'in sınıfı değişiyor:** "test ödemesi başarılı olursa" tetiği değil, **mevcut yükümlülük**. T5 zaten satıcı kimliği satırlarıyla aynı commit'e bağlıydı → sırası doğru, adı düzeltilmeli |
| **Sözleşme şartlarının alıcıya kalıcı biçimde verilmesi** (basılabilir/saklanabilir) | Yön. **m.8/1-d** [D] | Yok | Aynı e-posta ile kapanır (paket adı + tutar + tarih + `/kosullar` özeti) |
| **ETBİS kaydı** | Tebliğ **m.5/1-a**: faaliyete başlamadan önce [D] | Durum bilinmiyor — koddan görülemez | Bilal'in tek maddesiyle **aynı zincir** (kayıt olmadan ③ numarası zaten yazılamaz). Ayrı madde açılmadı |
---
## 2 · Görev 2 — G3'ün delta-0 ledger satırı
**Değerlendirme (tek paragraf).** Tutarı 0 olan ledger satırı ne mutabakatı ne bakiyeyi bozar: bakiye hiçbir yerde defterden toplanmıyor, tek kaynağı `user.credit_balance` kolonu (`src/lib/credits.ts:56-72`; `grep -rn delta src scripts` → defteri toplayan tek bir okuyucu yok) [D]; haftalık iyzico mutabakat sorgusu ise yalnız `reason IN ('purchase','topup')` ve `ref_id = orders.id` üzerinden çalışıyor (`docs/odeme/iyzico.md:82-88`) [D] — `report_generate` satırının `refId`'si istemcinin ürettiği `requestId` olduğu için bu sorguya hiç girmez, yani 0 TL'lik hareket iyzico tarafında görünmez bile. Idempotency de yerinde kalır: UNIQUE indeks `ledger_reason_ref` **`(reason, ref_id)`** üzerindedir, `delta` üzerinde değil (`src/lib/appdb/schema.ts:131`) [D]; `amount = 0` iken de satır aynı `refId` ile yazıldığından ikinci çağrı yine `DUPLICATE` döner ve `rapor-actions.ts:168-205`'teki "iade edilmiş / mevcut rapor / hâlâ uçuşta" üçlü dalı aynen çalışır; `spendCredits`'in `WHERE creditBalance >= 0` koşulu da paketli kullanıcı kredisi sıfırken geçer, yani `INSUFFICIENT` yanlış alarmı olmaz [Ç — bakiyenin negatife düşebildiği tek yol yok; tüm harcama yolları `gte` ile korunuyor]. **Sorun tek yerde:** iade dalı koşullanmazsa `grantCredits({ delta: RAPOR_KREDI, reason: "refund" })` paketliye **gerçek** 3 kredi basar (`rapor-actions.ts:212-218` ve `:339-345`), ve `listeRevize` zaten `hasPaket` kapısının arkasında olduğu için (`:256`) G3'ten sonra **her başarısız revizyon istisnasız bedava 3 kredi** demektir; `revisionCount` yalnız başarılı üretimde arttığından (`:344-352`) MAX_REVIZYON=2 tavanı döngüyü durdurmaz, `requestId` her denemede tazelendiğinden UNIQUE de durdurmaz — ve G3'ten sonra krediler yalnız sohbete gideceği için bu doğrudan "başkasının parasıyla LLM çağırma" bütçesine dönüşür. Başarısızlık ayrıca tamamen şansa bağlı değil: revizyon geri bildirimi serbest metin ve prompt'a giriyor, model iki denemede de dilim sayılarını tutturamazsa `RaporUretimHatasi` fırlıyor (`src/lib/ai/rapor.ts:338-345`) [Ç — kullanıcı yönlendirmeli başarısızlık **OLASI**, sağlayıcı kaynaklı başarısızlık ise **DOĞRULANDI** biçimde aynı dala düşüyor].
**KARAR: "şu koşulla sorun yok."** Koşul üç satır:
1. İade dalı aynı koşula bağlanır: `delta: hasPaket ? 0 : RAPOR_KREDI` (her iki `grantCredits` çağrısı — `rapor-actions.ts:212-218`, `:339-345`). Çağrı yine **kaldırılmaz**; `refund` satırı `refId` ile yazılmaya devam etsin ki `:168-180` ve `:298-312`'deki "önceki deneme iade edilmişti" dalı çalışmaya devam etsin.
2. Dönüş değerindeki bakiye de koşullanır: `kredi: user.creditBalance - RAPOR_KREDI` (`:243` ve `:363`) → `- (hasPaket ? 0 : RAPOR_KREDI)`. Yoksa paketlinin bakiyesi ekranda **3 eksik** görünür; kullanıcı "kredim yandı" diye destek yazar. (Sızıntı değil, görüntü hatası — ama G3'ün tüm vaadi "kredin yanmıyor" olduğu için tam da yanlış yerde bir hata.)
3. `hasPaket` değeri **tek yerden**, zaten okunmuş `user` nesnesinden alınsın (`listeOlusturKilitli`'ye `user` geliyor, `listeRevize`'de `user.hasPaket` kapısı var) — ikinci bir DB okuması eklenmesin; aksi hâlde harcama ile iade farklı `hasPaket` görebilir.
**Ek not (kapsam dışı, kayda geçsin):** G3 sonrası paketli kullanıcı için `krediBittiIsaretle` hiç tetiklenmez (`INSUFFICIENT` dönmez) — bu **doğru** davranış, kredi hatırlatma e-postası paketliye gitmemeli. `/api/soru` tarafı (sohbet, 1 kredi) G3'ten etkilenmiyor ve etkilenmemeli [D].
---
## 3 · Görev 3 — İki kısa uyum kontrolü
**(a) Veli yazısının kapanışı.** KVKK ve ticari ileti açısından **hiçbir şey değişmiyor**: metin yeni bir veri alanı toplamıyor, yeni form/izin kutusu eklemiyor, e-posta adresi istemiyor; altındaki `CtaSiraForm` zaten var olan bileşen ve sıralama girişi gizlilik metninde hâlihazırda beyan edilmiş bir veri kategorisi (`src/app/gizlilik/page.tsx:39-46`) [D]. — *Ama:* §0'da anlatıldığı üzere **bu değişiklik şu an çalışma ağacında yok**; `grep "birlikte doldurmanız"` = 0, tablo satırı = 0 [D]. Uyum açısından temiz, ama iş kayıp.
**(b) Search Console kuralının Bilal'in Google oturumunu kullanması.** İki ayrı soru:
- **KVKK/veri:** Search Console'da kişisel veri yok (URL'ler, toplulaştırılmış sorgu/gösterim verisi). Kullanıcı verisi dışarı çıkmıyor. **Uyum sorunu yok.**
- **Güvenlik:** sorun var, ama düşündüğümüz yerde değil. Ajanın kullandığı oturum Bilal'in **kişisel Google hesabı**; aynı tarayıcı oturumundan Gmail, Drive ve Google hesabı ayarları da erişilebilir durumda. PROTOKOL md.5 açıkça *"Kullanıcının açık oturumlarına (Gmail vb.) girme"* diyor [D] — yani kural, korumayı **ajanın kendini tutmasına** bırakıyor; teknik bir sınır yok. Bir yanlış sekme, bir prompt enjeksiyonu (SC arayüzünde değil ama aynı profilde açılan herhangi bir sayfada) ya da bir "yardımcı olayım" refleksi kapsamı e-posta kutusuna taşır. **Önem: orta.**
**Öneri (tek satır, yeni Bilal maddesi değil — zaten E3'ün içinde):** CEO'nun C4'teki çözümü "birinci hesabı mülke tam yetkili ekle" — bu hesap değiştirme sürtünmesini çözüyor ama **yetki genişliği sorununu çözmüyor**. Aynı 2 dakikada yapılabilecek daha iyisi: mülke **ajanın kullanacağı, Gmail'i olmayan ayrı bir Google hesabı** "tam yetkili kullanıcı" olarak eklensin; ajan yalnız o profille çalışsın. Bilal'in kişisel hesabı mülkün sahibi olarak kalır.
- **Ayrıca:** kuralın kendisi şu an `AGENTS.md`'de **yok** (§0). Yani bu gece "kapandı" sayılan C4 maddesinin üçte ikisi kayıp.
---
## 4 · Bulgu tablosu
Önem: **kritik** = para/veri kaybı ya da hemen istismar edilebilir · **yüksek** = mevzuat ihlali / gelir sızıntısı · **orta/düşük** = düzeltilmeli, acil değil.
Kesinlik: **DOĞRULANDI** = dosya:satır ya da mevzuat metniyle gösterildi · **OLASI** = koddan çıkarım, koşturarak denenmedi.
| # | Dosya:satır / kaynak | Sorun | Somut istismar / ihlal senaryosu | Önem | Düzeltme | Kesinlik |
|---|---|---|---|---|---|---|
| **B1** | `git reflog HEAD@{2}` · `docs/ekip/KARARLAR.md` · `AGENTS.md` · `content/rehber/veliler-icin-tercih-rehberi.md` | Aynı çalışma ağacındaki kod ajanı `reset` ile commit'lenmemiş değişiklikleri sildi; hiçbir commit'te ve dangling nesnede yok | Gece vardiyasında üretilen karar kayıtları, kural metni ve bir yazının yeniden yazımı kayboldu; kayıp fark edilmeden sabah özeti "kapandı" diyecekti | **kritik** | §5'teki iki karar kaydı geri yapıştırılsın; C2'ye "reset/checkout/clean/stash yasak" cümlesi eklensin; `docs/`+`content/` ajanları lokal commit atsın | DOĞRULANDI |
| **B2** | `src/features/rapor/rapor-actions.ts:212-218` ve `:339-345` (G3 sonrası) | İade dalı `hasPaket` koşuluna bağlanmazsa, harcaması 0 olan paketliye 3 **gerçek** kredi yazılır | Paketli kullanıcı revizyon isteğini modelin iki denemede de doğrulayamayacağı biçimde yazar → `RaporUretimHatasi` → +3 kredi; `revisionCount` başarısızlıkta artmadığı ve `requestId` her denemede tazelendiği için döngü sınırsız; krediler sohbete gidince başkasının parasıyla LLM çağrılır | **yüksek** | `delta: hasPaket ? 0 : RAPOR_KREDI` (çağrı kaldırılmaz) | DOĞRULANDI (kod) / OLASI (kullanıcı yönlendirmeli başarısızlık oranı) |
| **B3** | `rapor-actions.ts:243` ve `:363` | Dönen `kredi` alanı koşulsuz `- RAPOR_KREDI` | Paketli kullanıcı liste üretince ekranda bakiyesini 3 eksik görür; G3'ün tüm vaadi "kredin yanmıyor" olduğu için tam ters mesaj + destek yükü | orta | `- (hasPaket ? 0 : RAPOR_KREDI)` | DOĞRULANDI |
| **B4** | `src/app/iletisim/page.tsx` (tamamı) · grep `mersis\|vergi kimlik\|ticaret unvan\|KEP` = **0** | Satıcı kimliği sitenin hiçbir yerinde yok | Yön. (RG 32058) m.5/1 ihlali: ödeme alan bir ETHS, "iletişim" başlığı altında unvan/adres/numara/telefon/KEP bulundurmak zorunda. Aynı eksik Mesafeli Sözleşmeler Yön. m.5/1-b ve -c'yi de ihlal ediyor → tüketici şikâyetinde ön bilgilendirme yapılmamış sayılır | **yüksek** | §1.4 (A) + (B) | DOĞRULANDI |
| **B5** | `src/lib/eposta.ts` (yalnız 2 şablon) · `src/lib/odeme.ts:78-82` | Alıcıya sipariş teyidi gönderilmiyor | Yön. m.9/1: sipariş alındığı, ortam üzerinden **ve ayrıca** e-posta/SMS/telefondan bildirilmek zorunda. Bugün alıcı ödediğine dair elinde tek bir kayıt olmadan kalıyor; itiraz/chargeback'te satıcı tarafında delil de yok | **yüksek** | T5 e-postası (satıcı kimliği satırları + tutar + tarih + `/kosullar` özeti — m.8/1-d'yi de kapatır) | DOĞRULANDI |
| **B6** | `src/app/kosullar/page.tsx:61-83` | Cayma hakkının kanunen bulunmadığı bilgisi yok | Mesafeli Sözleşmeler Yön. m.5/1-h ihlali. Ters yönde de zararlı: 14 günlük gönüllü iadeyi "kanuni hak" sanan kullanıcı, kapsam dışı bir talepte reddedilince haksızlığa uğradığını düşünür | orta | §1.4 (C) | DOĞRULANDI |
| **B7** | `src/app/kosullar/page.tsx` (tamamı) | Tüketici hakem heyeti / mahkeme başvuru bilgisi yok | Mesafeli Sözleşmeler Yön. m.5/1-k ihlali | orta | §1.4 (D) | DOĞRULANDI |
| **B8** | grep `işlem rehberi` = 0 | "İşlem rehberi" başlığı yok | Yön. m.7/1 ihlali: teknik adımlar, sözleşmenin saklanıp saklanmayacağı, hata düzeltme araçları ana sayfadan ulaşılabilir olmalı | orta | `/kosullar`'a üçüncü bölüm (yeni sayfa değil) | DOĞRULANDI |
| **B9** | grep `kdv\|vergiler dahil` = 0 · `paket-satinal.tsx:67,167` | Fiyatın vergiler dâhil olduğu yazmıyor | Mesafeli Sözleşmeler Yön. m.5/1-d: toplam fiyat **tüm vergiler dâhil** bildirilmeli | düşük | §1.4 (B)'deki ikinci cümle | DOĞRULANDI |
| **B10** | `src/app/gizlilik/page.tsx:35-47` | Aydınlatma metninde veri sorumlusunun kimliği yok | KVKK aydınlatma yükümlülüğü, veri sorumlusunun kimliğinin bildirilmesini içerir; ayrıca veri silme talebinin **kime** yapılacağı da belirsiz kalıyor | orta | §1.4 (E) | DOĞRULANDI |
| **B11** | ETBİS Tebliği m.5/1-a · koddan görülemez | ETBİS kaydının varlığı bilinmiyor | Kendine ait e-ticaret ortamında **faaliyete başlamadan önce** kayıt zorunlu; kayıtsız satış idari yaptırım riski | **yüksek** | Bilal'in tek maddesiyle aynı zincir (kayıt olmadan MERSİS/VKN satırı zaten yazılamaz) | DOĞRULANDI (yükümlülük) / bilinmiyor (bizim durumumuz) |
| **B12** | PROTOKOL md.5 · `24-ceo-kapanis.md` §C4 | Search Console işi Bilal'in kişisel Google oturumundan yürüyor | Ajan, mülke erişmek için açılan oturumdan Gmail/Drive'a da erişebilir durumda; teknik sınır yok, yalnız kural var | orta | Mülke Gmail'i olmayan ayrı bir hesap "tam yetkili" eklensin; ajan yalnız o profille çalışsın | DOĞRULANDI (yapılandırma) |
---
## 5 · Metin × kod uyumsuzlukları
| Metin ne diyor | Kod / gerçek ne | Nerede |
|---|---|---|
| `/kosullar`: *"Tercih Dönemi Paketi tek seferlik bir satın almadır"* | Paket etiketi A2 ile **"KolayTercih Paketi"** (ya da `marka`'nın önerdiği "Tercih Listesi Paketi") olacak; `/kosullar` metni eski adı yazmaya devam ediyor | `src/app/kosullar/page.tsx:50-57` × `src/lib/credits.ts:7` + `24-ceo-kapanis.md` A2 · **A2 commit'ine `/kosullar` de dâhil edilmeli** |
| `/kosullar`: *"14 gün içinde koşulsuz iade talep edebilirsin"* — kanuni hak gibi okunuyor | Kanunen cayma hakkı **yok** (Mesafeli Söz. Yön. m.15/1-ğ,h); bu gönüllü bir taahhüt | B6 |
| `/gizlilik`: *"sana hizmetle ilgili e-posta (giriş bağlantısı, **ödeme bilgilendirmesi**) göndermek"* | Ödeme bilgilendirmesi e-postası **yok**; `src/lib/eposta.ts` yalnız magic-link ve kredi hatırlatma taşıyor | B5. Metin var olmayan bir gönderimi beyan ediyor — T5 yapılınca uyum kendiliğinden kurulur |
| `/iletisim`: *"Ödeme, iade, **hesap silme** ya da başka bir konuda"* | Hesap silme yolu var (e-posta), ama talebin **muhatabı** kim olduğu (veri sorumlusu) hiçbir yerde yazmıyor | B10 |
| `/kosullar` üstündeki kod yorumu: *"MVP taslağıdır; yayına almadan önce hukuki gözden geçirme gerekir"* | Hukukçu tutulmayacağı **karara bağlandı** (KARARLAR 2026-09-21). Yorum, var olmayan bir kapıya işaret ediyor | `src/app/kosullar/page.tsx:15`. Metin düzeltilirken yorum da güncellenmeli: *"içeride sürdürülür; son revizyon: …"* |
| `24-ceo-kapanis.md` T5: makbuz e-postası **tetiğe** bağlı ("test ödemesi başarılı olursa") | Yön. m.9/1 bunu **yürürlükteki yükümlülük** kılıyor; tetik değil | B5 |
---
## Ek · Kaybolan KARARLAR.md kayıtlarının tam metni (§0 kurtarma)
> Bu iki blok, oturumumun ilk okumasında `docs/ekip/KARARLAR.md`'nin sonunda duruyordu ve şu an dosyada yok. Olduğu gibi dosyanın **sonuna** geri yapıştırılabilir. Sahibi `ceo`; ben dosyaya yazmadım.
```
## 2026-09-22 — Sevk sorunu: sıra "önce çelişkiyi kaldır, sonra ölü ucu bağla", yeniden tasarım ertelendi
- Karar: 22 Eyl gündüz oturumunda dört ajanın (analitik/tasarım/marka/yapay zekâ) tek soruya verdiği dört farklı "en yüksek etkili iş" önerisi şu sıraya kondu ve bu hafta **5 iş** onaylandı: **P1** sezon çelişkisi (`icerik/sezon-celiskisi`), **P2** `liste_uretim_basladi` olayı (`olcum/liste-uretim-basladi`), **P3** + ölü ucu (`funnel/arti-olu-ucu`), **P4** girişli kullanıcıya kalıcı `/listem` girişi + giriş callback'i (`funnel/listem-girisi`), **P5** tadımlık CTA'sının yanlış vaadi ve hedefi (`icerik/tadimlik-vaat`). Hepsi S; P2 önce merge edilir ve P3/P4 ile **aynı yayında** çıkar (payda olmadan huni değişikliği okunamaz). Sezon dışı olduğu için A/B yok, oran yok: kabul ölçüsü **adet** (haftalık olay sayısı).
- Yetki: [KARAR] (P2, P3, P4; P1 ve P5'in yanlış/çelişkili cümleyi kaldıran kısmı) · [BİLAL] (P1'de bandın yeni sezon metni, P5'te tadımlık CTA'sının yeni cümlesi — ayrı `[Bilal]` commit'i olarak hazırlanır)
- Gerekçe: Dört iddia da koddan doğrulandı — navbar'da `/listem` linki yok ve giriş callback'i `"/"` (`src/components/site-header.tsx:8-38`, `src/features/kullanici/components/user-nav.tsx:45-64`, `src/features/kullanici/components/giris-karti.tsx:18-19`); + kapısı sihirbazın 3 adımını doldurtup `profilTamamlandi`'nın `null` dalında bırakıyor (`src/features/liste/components/program-ekle-butonu.tsx:82`, `liste-cekmecesi.tsx:293`, `use-tercih-profili.ts:346`, toast `tercih-profili-kapisi.tsx:238`) ve bu, 30g'deki en büyük sıra kaynağı (14/28 olay, `01-ai-listesi-hunisi` §1d); üst bant bugün "Tercih dönemi sona erdi" (`src/components/site-top-banner.tsx:7-8,64`) derken aynı sayfada CTA "Tercih dönemi bitmeden yerini al" diyor (`src/features/pazarlama/components/hero-focus-button.tsx:45,65` — her iki dalda da); tadımlık CTA'sı "24 satırın tamamı için giriş yap" diyor ama maske 3 satır açıyor ve callback `/sonuc`'a düşüyor (`tadimlik-satiri.tsx:111,186`, `src/lib/rapor-maske.ts:12`).
- Yerine geçtiği karar: —
## 2026-09-22 — `/sonuc`'ta LLM'siz 24 satırlık önizleme ve diğer yeniden tasarımlar bu hafta yapılmaz
- Karar: Yapay zekâ mühendisinin "senin 24'lük iskeletin" önizlemesi (0 LLM, `04-uretim-engelleri` §3), tasarımcının Ö2 (mobil katalog satırı), Ö4 (`/sonuc` sıralamasının tersine çevrilmesi) ve markanın H2/H3 (hero alt başlığı, katalog CTA metni) işleri **ertelendi**; sıradaki turda önce CTO şartnamesi yazılır. Ertelemeyen tek istisna `/sonuc` H1'i (`src/app/sonuc/page.tsx:98-102` arasında bugün hiç `<h1>` yok) — gelecek turun ilk işidir. Deneme maskesinin gevşetilmesi (3→8 satır) gelir modeli kararıdır, Bilal'e bırakıldı.
- Yetki: [KARAR] (erteleme) · [BİLAL] (maske/gelir kararı)
- Gerekçe: Sezon 10 Ağu 2026'da kapandı; hız ~95 ziyaret/hafta ve haftada ~0,5 liste (`01-ai-listesi-hunisi` §5.1). Bu hacimde hiçbir oran makul sürede okunamıyor (`§5.2`: en iyi aday bile ~6 hafta, `/listem`→liste ~36 hafta) ve A/B her kolu 47 ziyaret/haftaya düşürür. Bu hafta onaylanan 5 iş "ölçülemeyecek deney" değil, koddan kesin gösterilmiş **kusur ve çelişki** düzeltmesidir. Kurucunun inceleme kapasitesi günde 1–2 saat (`docs/urun/vizyon.md`); onaylanan iş = inceleme borcu.
- Yerine geçtiği karar: —
```
---
## Kaynakça (hepsi bu turda açılıp okundu)
| Kaynak | Adres | Not |
|---|---|---|
| Elektronik Ticaret Aracı Hizmet Sağlayıcı ve Elektronik Ticaret Hizmet Sağlayıcılar Hakkında Yönetmelik | `resmigazete.gov.tr/eskiler/2022/12/20221229-5.htm` (RG 29.12.2022/32058) | m.2, m.4/h, **m.5**, m.7, m.8, m.9, **m.34** okundu |
| Mesafeli Sözleşmeler Yönetmeliği | `resmigazete.gov.tr/eskiler/2014/11/20141127-6.htm` (RG 27.11.2014/29188) | **m.5**, **m.15** okundu. *Sonraki değişiklikleri kontrol edilmedi → **doğrulanmalı*** |
| Elektronik Ticaret Bilgi Sistemi ve Bildirim Yükümlülükleri Hakkında Tebliğ | `resmigazete.gov.tr/eskiler/2017/08/20170811-7.htm` (RG 11.08.2017/30151) | **m.5**, m.6 okundu. *2022–23 e-ticaret paketinden sonraki hâli → **doğrulanmalı*** |
| Elektronik Ticaretin Düzenlenmesi Hakkında Kanun (6563) | `mevzuat.gov.tr` — MevzuatNo=6563 | Yönetmeliğin dayanağı; künye doğrulandı, madde metni gömülü fontu çözülemediği için **alıntılanmadı** |
**Yapılmayanlar (sınır gereği):** canlıya istek/tarama/ödeme denemesi yok; secret değeri okunmadı; `pnpm audit` **koşturulmadı** (disk kuralı: `pnpm install`/`build` yasak, lockfile'sız audit anlamsız) — bağımsız bir bağımlılık turunda yapılmalı.
---
## Bilal'den istenen (1 madde — CEO'nun indirdiği tek madde; artırılmadı)
1. **Satıcı kimliği: 5 satır.** `/iletisim` sayfasına girecek beş alanı yaz — ① ticaret unvanın *(ya da esnaf/sanatkâr kaydındaysan ad-soyad)*, ② iş yeri merkez adresin, ③ **MERSİS numaran** *(tacirsen)* **ya da vergi kimlik numaran** *(esnafsan)*, ④ telefon numaran, ⑤ KEP adresin. Metin `docs/gece-vardiyasi/2026-09-22/31-guvenlik-satici-kimligi.md` §1.4'te hazır, `TODO-BILAL` yerlerine yapıştırılacak. *Vergi dairesi adı listeden çıktı (mevzuat istemiyor), yerine telefon ve KEP girdi.* **~5 dk.** — Bu bilgileri üretemiyorsan (kayıt henüz yoksa) tek cevap yeter: *"esnaf/tacir/şirket değilim"*; o zaman sıradaki iş mali müşavirle 1 görüşme olur, sayfa bekler.
---
## Ek 2 · §0'a düzeltme (rapor yazıldıktan sonra, aynı tur içinde)
Raporu kapattıktan sonraki kontrolde durum kısmen değişti — kayıp **tamamen** değil, **kısmen** onarıldı:
| Dosya | §0'daki durum | Şu anki durum (son kontrol) |
|---|---|---|
| `AGENTS.md` | Search Console bölümü kayıp | **Geri geldi** — paralel çalışan ajan bölümü yeniden yazdı (`git diff AGENTS.md` = +13 satır, "Yayın sonrası arama motoru bildirimi (zorunlu)"). Not: yeni metinde CEO'nun C4'teki `curl \| grep -c <slug>` sitemap kuralı **yok**; `25-seo-duzeltme.md` §2'deki iki ayaklı kural da yok — yerine "canlıda 200 dönen adres" kuralı var. **Bu iki kural aynı şey değil**, eksik olan ayak yeniden yazılmalı |
| `docs/ekip/KARARLAR.md` | 2 adet 22 Eylül kaydı kayıp | **Hâlâ kayıp** (`grep "^## 2026-09-22"` = 0). §5'teki metin geri yapıştırılmalı |
| `docs/ekip/BACKLOG.md` | 22 Eylül güncellemesi kayıp | **Hâlâ kayıp** (HEAD ile fark yok) |
| `content/rehber/veliler-icin-tercih-rehberi.md` | Veli kapanışı + tablo kayıp | **Hâlâ kayıp** (`grep "birlikte doldurmanız"` = 0, tablo satırı = 0) |
**B1 bulgusunun önemi düşmüyor:** kaybın kendisi gerçekleşti, üç dosyada hâlâ duruyor ve onarım şans eseri (başka bir ajanın aynı işi tekrar yapması) oldu. §0'daki iki süreç önerisi aynen geçerli.