docs(ekip): 22-23 Eylül vardiya raporları, BACKLOG/KARARLAR/PROTOKOL güncellemeleri
All checks were successful
Deploy / deploy (push) Successful in 17s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-23 11:43:11 +03:00
parent a8c75ce4a7
commit a42a1a9920
27 changed files with 3508 additions and 8 deletions

View File

@@ -0,0 +1,107 @@
# Orkestratör günlüğü — 2026-09-22 gecesi
## Tur 1 (23:47 – 00:00) — beş bulgu ajanı paralel
| Ajan | Rapor | Durum |
|---|---|---|
| analitik | `01-analitik.md` | ✔ 801 temiz TR oturumu |
| tasarimci | `02-tasarim.md` | ✔ 5 kesim + URAP yerleşimi |
| marka | `03-acilar-ve-rakipler.md` | ✔ forum/şikâyet acıları |
| yapay-zeka-muhendisi | `04-liste-maliyet-ve-oneriler.md` | ✔ maliyet ölçüldü |
| veri-muhendisi | `05-urap.md` | ✔ URAP 198/198 eşleşti |
### Gecenin yakınsaması (orkestratör notu)
`analitik` ve `marka` birbirinden HABERSİZ aynı noktaya çıktı:
- **analitik:** net detayını açan oturumun sıra girme oranı %9,4; açmayanın %3,2. Ama oturumların %85,5'i hiç açmıyor. "Sorun fazla bilgi değil, işe yarayan tek bilginin bir tıklamanın arkasında olması."
- **marka:** YÖK Atlas 2026'da net/OBP verisini KALDIRDI, adaylar şikâyet ediyor. O veri bizde duruyor (`netler` tablosu, 2023-2025, ~21bin kayıt/yıl) ama yalnız bir modalın arkasında ve pazarlamada tek cümle yok.
İkisi birleşince: elimizde rakipte olmayan bir veri var, üstelik ölçülmüş dönüşüm etkisi var, ve bir tıklamanın arkasında saklı. Tur 2'de CEO'nun önündeki ana karar bu.
`tasarimci` ve `marka` URAP'ta da bağımsız olarak aynı sonuca vardı: tablo değil, üniversite sayfasında tek satır + atıf.
## Tur 2 (00:00 –) — CEO karar turu
`ceo` → `06-ceo-kararlari.md`. Üç rapor iddiası koddan ÇÜRÜTÜLDÜ (`/bolum`'de form yok iddiası, `/paket`'te iade görünmüyor iddiası, sezon bandı kesimi — bandın metnini Bilal 18 saat önce bizzat seçmiş). 4 iş onaylandı, gerisi gerekçeli reddedildi. `KARARLAR.md`'ye 11 kayıt eklendi.
**Bilal 00:05'te yazdı:** "uyuyorum benden onay bekleme bundan sonra" + "çalışsın ekip".
Orkestratör yorumu: bu, işin durmaması içindir; geri dönüşü olmayan yetki DEĞİLDİR. Push, deploy, `main`'e commit ve fiyat/paketleme değişikliği yine yapılmaz — `[BİLAL]` işler dalda hazır bekler.
## Tur 3 (00:10 –) — dört paket paralel, ayrı worktree + dal
| Paket | Dal | Ajan |
|---|---|---|
| P1 risk etiketi | `gece/0922-risk-etiketi` | yazilimci |
| P2 unitur sızıntısı | `gece/0922-unitur-kacagi` | veri-muhendisi |
| P3 URAP | `gece/0922-urap` | yazilimci |
| P4 ölçüm | `gece/0922-olcum` | yazilimci |
Bilinen çakışma: P2 ve P3 ikisi de `scripts/veri-kalite.ts` sonuna ekleme yapıyor. İkisine de "dosyanın en sonuna ekle, mevcut satırları düzenleme" denildi; merge'ü orkestratör çözecek.
### P1 ✔ (00:18) — `gece/0922-risk-etiketi` @ 2dbc8b5
tsc + lint temiz. Sapma (kabul): `/sonuc` tablosunun boş ilk sütun başlığına "Risk" yazıldı — sütun artık metin taşıyor, `/listem`'deki eşdeğer sütunla hizalandı.
Bedel: risk sütunu ~86px aldı, program adı sütunu ~150px→~85px kısalıyor (kesilme değil, truncate). Bilal telefondan bakacak.
Kapsam dışı iki bulgu (backlog adayı, dokunulmadı): `rapor-listesi.tsx:264` kilitli satırdaki "Pakette" etiketi hâlâ mobilde `sr-only`; `liste-cekmecesi.tsx:426` çekmecede risk yalnız renkli nokta.
### P4 ✔ (00:24) — `gece/0922-olcum` @ 26893ce
tsc + lint temiz. 14/14 `/paket` linkinde artık `?kaynak=` var; `sihirbaz_adim{1}` modal açılışında `olayBirKez` ile bir kez atılıyor.
**Şartname sapması (orkestratör onayı: kabul).** `paket-gorunum-olayi.tsx` dosya listesinde yoktu ama `?kaynak=` değerlerini `["kilit","kredi_bitti","nav"]` allowlist'inden süzüp gerisini `"diger"`e düşürüyormuş. Genişletilmeseydi 10 yeni kaynak panelde tek kovada toplanacak, iş görünüşte bitip ölçüm deliği kapanmayacaktı — AGENTS.md'nin "kısmi commit'te bağımlılık kapanışını kontrol et" kuralının tam örneği. Aynı commit'e alındı, P1/P2/P3 kapsamıyla çakışmıyor.
Yan not (ayrı iş): `listem-govde.tsx:288` ve `:369` iki ayrı kilit yüzeyi ama ikisi de `kaynak=kilit`.
### P3 ✔ (00:34) — `gece/0922-urap` @ 68cb69e, 4932671, b63c7e8
typegen + tsc + lint + **build temiz** (229 üniversite sayfası prerender). Kabul kriterleri 6/6.
**Orkestratörün bağımsız veri doğrulaması (yapıldı, kritik).** URAP verisini dışarıya atıf vererek yayımlayacağımız için ajanın verisine güvenmeyip kendim denetledim. Şüphem şuydu: URAP akademik yayın/atıf ağırlıklı bir sıralama, Koç'un 1. olması beklenmedik göründü.
- Tarayıcı bu oturumda açılmadı (erişim reddedildi) → URAP'ın kendi basın açıklaması PDF'i indirildi ve akış çözülerek okundu (`newtr.urapcenter.org/cdn/storage/PDFs/mezDn2uAd4mx2mZzW`, 28 Ekim 2025).
- PDF'te üniversite adları gömülü fontta olduğu için çıkmadı, **puanlar çıktı**. Puanlar üç tabloya bölünmüştü ve ilk bakışta devlet/vakıf ayrımı sandım — tutarsızlık şüphesi buradan doğdu.
- Anadolu Ajansı haberiyle çözüldü: tablolar devlet/vakıf değil, **tıp fakültesi olan / olmayan** ayrımı. Genel sıralama: 1 Koç, 2 Hacettepe, 3 ODTÜ.
- **Beş nokta karşılaştırması PDF'teki puanlarla birebir tuttu:** 1 Koç 1152,91 · 2 Hacettepe 1096,48 · 3 ODTÜ 1082,81 · 4 İTÜ 1067,01 · 18 Boğaziçi 881,20. Dosyada 198 satır.
- **Hüküm: veri doğru.** Şüphe yersiz çıktı ama denetim gerekliydi; yanlış olsaydı hem öğrenciyi yanıltırdık hem URAP iznini riske atardık.
Sapmalar (kabul): kaynak satırı yalnız 1. sayfada (derin sayfalarda URAP sayısı da yok) · boş durum varyantı `unitur`'a bakıyor, P2 merge'ünden sonra üç kurum ek kod olmadan doğru cümleye geçiyor · 5. veri-kalite kontrolü "önceki dönem" sabiti olmadığı için "URAP dışında kalan 150+ programlı TR üniversitesi" kontrolüne çevrildi.
**P2 ile tek çakışma yüzeyi:** `scripts/veri-kalite.ts` import bloğunun sonu.
### P2 ✔ (00:42) — `gece/0922-unitur-kacagi` @ iki commit (kod+rapor, veri)
Devlet filtresi 27→0, vakıf 0→27. 126 satır düzeldi; 45 kolon kıyaslandı, değişen yalnız `unitur` ve `il`; 2021–2026 puan/sıra/kontenjan kolonlarında **0 satır** değişti.
**Şartname genişletmesi (kabul, iyi yakalama):** CEO'nun yazdığı "baz ad başına tek `unitur`" kontrolü Kıbrıs Amerikan'ı yakalayamıyor — kurumun İKİ yazımı da yanlış etiketli olduğu için ortada çelişki yok, kontrol 100 satırın yalnız 58'ini koruyor. Ajan 6 satırlık ikinci kontrol ekledi: *DEVLET etiketli kurumun en az bir programı Türkiye ilinde olmalı*. Dördünü de sıfır yanlış pozitifle yakalıyor.
Yeni bulgular (bu geceye alınmadı): `programs_arsiv`'de aynı yanlış etiket sürüyor (kullanıcıya yansımıyor, `src/` tarafında arşivi okuyan SQL yok) · `data/yokatlas.db-shm`/`-wal` git'te izleniyor, `git status`'ü kendiliğinden kirletiyor.
Düzeltme: CEO dosyasında geri dönüş etiketi `veri-2026-son` yazıyor ama git'te yok — **doğrusu `veri-2025-son`**.
## Tur 4 (00:45) — entegrasyon
`gece/0922-entegrasyon` = main(9bd448b) + P1 + P4 + P2 + P3. Tek çakışma öngörüldüğü yerdeydi (`scripts/veri-kalite.ts`, iki saf ekleme aynı noktada) → ikisi de tutuldu, merge commit 9e1506d.
**Birleşik doğrulama (temiz worktree'de, AGENTS.md gereği):**
- `next typegen` + `tsc --noEmit` + `eslint` → **temiz**
- `pnpm veri-kalite --yil 2026` → **0 ZORUNLU kaldı, 3 uyarı** (üçü de önceden vardı). P2'nin iki kontrolü ve URAP'ın beş kontrolü birlikte geçiyor.
- `pnpm build` → **başarılı** (229 üniversite + 490+ sayfalama yolu prerender)
- Üretilen HTML denetimi (orkestratör): Boğaziçi → kart `18 / 198` + `2025-2026`, atıf linki `rel="noopener"`, **`nofollow` yok** (izin şartı karşılanıyor). Doğu Akdeniz (URAP dışı) → "Tür" kartı yerinde, açıklama cümlesi var, link yok (sayı yoksa atıf da gerekmiyor — doğru).
**P3'ün yan etkisi (Bilal'e soruldu, düzeltilmedi):** "Tür" kartı artık yalnız URAP dışındaki 31 kurumda göründüğü için `trBaslikDuzeni`'nin "Kktc" / "Yurtdisi Kamu" yazımı çok daha görünür hâle geldi. Önceden de böyleydi ama çoğunlukta "Devlet"/"Vakıf" yazdığı için göze batmıyordu. Tek satırlık etiket düzeltmesi; CEO'nun onay listesinde olmadığı için **bilerek yapılmadı**.
## Tur 5 (00:50) — bağımsız denetimler
### `guvenlik-uyum` ✔ → `11-guvenlik-denetimi.md`
Bu geceki değişikliklerde **kritik/yüksek bulgu yok.**
- `?kaynak=` allowlist kapalı (`KAYNAKLAR.find(k => k === ham) ?? "diger"`), serbest metin sızamıyor; ham değer sessionStorage anahtarına bile girmiyor; `kaynak` ödeme akışına/siparişe/iyzico'ya taşınmıyor.
- Kredi, sipariş, yetki kodunda **sıfır** değişiklik (diff boş).
- URAP: sayı ve atıf linki aynı `ilkSayfa` koşuluna bağlı → "sayı var, link yok" sayfası üretilemiyor. OG/metadata/JSON-LD URAP'a dokunmuyor.
**Geceden bağımsız, önceden var olan bulgu (orta) — Bilal'e sorulacak:** `src/lib/analitik.ts:10-12` yorumu "ham başarı sıralaması analitiğe gönderilmez" diyor ama Rybbit'in otomatik sayfa görüntülemesi ham query string'i saklıyor: panelde `?sira=14000&tur=say`, `?sira=581000&tur=ea&sihirbaz=1` satırları duruyor (doğrulandı). Kullanıcı özelliklerinde ad/e-posta olduğu için tekil öğrenciye bağlanabilir. Dün `gece/p2-olcum` dalının tepesindeki `[Bilal]` commit'i (Rybbit'e e-posta/isim gönderimini kaldırır) bu riskin diğer yarısına dokunuyordu — ikisi birlikte değerlendirilmeli.
### `urun-yoneticisi` ✔ — `docs/ekip/BACKLOG.md` güncellendi
14 yeni madde, 4 madde durum değişikliği, 3 madde kapandı. #8 (üniversite zenginleştirme) bölündü: URAP parçası #8a `dalda`, kalan 7 gösterge L→~18 saat. #10 `kategoriBul` ile birleştirildi. Bilal kararı bekleyen iki iş kabul kriteriyle hazır: #26 Öncelikler'in kalkması (kabul kriterine `/meraklisina` şema senkronu eklendi — AGENTS.md), #27 listenin paketsize ücretsiz olması. Reddedilenler §4'te kalıcı listelendi ki sonraki tur geri sokmasın.
Güvenlik bulgusunu havale edilmediği için backlog'a yazmadı (doğru davranış) — orkestratör sabah özetine doğrudan Bilal'in sorusu olarak koyuyor.
### `cto` (bağımsız kod denetimi) ✔ → `12-kod-denetimi.md`
**Hüküm: incelemeye çıkabilir — iki tek satırlık düzeltmeyle.** Kritik yok.
- **Y1 (yüksek):** P4'ün tek amacı olan ölçüm yanlış kurulmuş. `adim:1` oturum başına bir kez (`olayBirKez`), `adim:2` her ileri geçişte → payda ile pay farklı birimde, panelde %200 geçiş oranı çıkabilir. Kodun kendi yazılı kuralı bunu yasaklıyor (`analitik.ts:23`). **CEO'nun P4 kabul kriteri yanlıştı** — kriter düzeltildi.
- **O3 (orta):** P2+P3 birleşince `trBaslikDuzeni` tr-TR küçültmesiyle "YURTDISI KAMU" → **"Yurtdısı Kamu"**. Dün "Devlet" yazan 6 sayfa bugün bozuk kelime gösteriyor. Tek başına ne P2 ne P3 üretirdi.
- **O1:** P2'nin commit mesajındaki "170 → 166" yanlış; doğrusu **132 → 129** (170/166 ham ad sayısı, slug değil). Davranış doğru, kanıt rakamı yanlış.
- **O4:** URAP takası 198 sayfadan devlet/vakıf bilgisini tamamen sildi. Tasarımcının "zaten özet paragrafta var" gerekçesi **yanlış** — orkestratör doğruladı: Boğaziçi sayfasında "Devlet" 0 kez, Koç'ta "Vakıf" 0 kez (her yazımda). Bilal'e 1 numaralı soru olarak gitti.
- Temiz çıkanlar: veri farkı bağımsız doğrulandı (45 kolon ATTACH ile kıyaslandı, değişen yalnız `unitur` 100 + `il` 26) · P2+P3 birleşik boş durum doğru · `olayBirKez` SSR/gizli sekme/storage kapalıda patlamıyor · P1 mobil iddiası doğru · atıf şartı 229 sayfada delik yok.
## Tur 6 (01:05) — denetim düzeltmeleri ✔ → `13-denetim-duzeltmeleri.md`
Y1 `gece/0922-olcum` @ 58f4dc2'de (`olayBirKez` → `olay`, O2 seri kırılması notu eklendi), O3 `gece/0922-urap` @ 0e689e6'da (`UNITUR_ETIKET` haritası; `slug.ts`'e DOKUNULMADI — il adlarında da kullanılıyor).
Entegrasyon tazelendi → `gece/0922-entegrasyon` @ 74f7aa1. **typegen + tsc + lint + build dördü de temiz.** HTML: "Kktc" 0 sayfa, "Yurtdısı" 0 sayfa; `>Tür</dt>` 31 + `>URAP Türkiye</dt>` 198 = 229, delik yok.
Dürüstlük notu (ajanın kendisi bildirdi): `/bolum/*` rozetlerinde aynı bozuk etiketler duruyor — **gerileme değil**, `main`'de de vardı; şartname o dosyayı vermedi, backlog'a gitti.
## Tur 7 (01:20) — manşet bulgunun testi ✔ → `14-analitik-ters-nedensellik.md`
`analitik` **kendi §1 bulgusunu çürüttü.** Net detayını açanların %60'ı siteye yeni girmiş ve bu grup %1,43 ile sıra giriyor (taban %3,21'in ALTINDA); %9,4'ün tamamı derin gezinen 46 oturumdan geliyor. Ayrıca hem açıp hem sıra giren 14 oturumun **9'unda sıra girişi detaydan ÖNCE**. İki bağımsız test aynı yönde → **korelasyon**. CEO'nun reddi doğruydu; "net verisini öne çekersek dönüşüm 3 katına" gerekçesi düştü ve bir daha kullanılmayacak. P1 ayakta kalır (nedensellik iddiasına dayanmıyor).
## Kapanış (01:25)
`SABAH-OZETI.md` + `sabah-ozeti-sesli.m4a` (6 dk 37 sn, Türkçe) yazıldı. `main` 9bd448b'de, dokunulmadı. Bilal'in commit'lenmemiş dosyaları yerinde. Nöbetçi zamanlayıcı silindi, `caffeinate` kapatıldı.