Files
kolaytercih/docs/ekip-raporlari/2026-10-07/yazilimci-paket-B.md
bilalgursen da0e9dff7a docs(ekip): 7–10 Ekim raporları, eval sonuçları, seslendirme betiği
- docs/ekip-raporlari/2026-10-07, 2026-10-09, 2026-10-10 raporları ve ekran görüntüleri
  (ses/ altındaki mp3 dosyaları depoya alınmadı, 38 MB)
- BACKLOG #38: rehber yazılarına "Dinle" düğmesi adayı
- scripts/seslendir.py (Türkçe TTS) ve .gitignore'a .venv-tts/
- scripts/eval/sonuc: 8–10 Ekim revizyon eval çıktıları

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-11 00:33:39 +03:00

9.5 KiB
Raw Blame History

Yazılımcı raporu — Paket B · revizyon "ilk N" garantisi (madde 4)

Dal v2, ana checkout. Commit'ler HEAD bed8397 üstüne; push yok.

Özet (5 madde)

  1. Kök neden koddan doğrulandı ve kapatıldı: ilkTercihleriGarantile (yeni saf fonksiyon, src/lib/revizyon-kurali.ts) model "ilk N" ölçütüne uyan satırı seçmemişse havuzdaki uyan programları aynı dilimdeki uymayan satırlarla takaslar; dilim adetleri değişmez. rapor.ts bunu nihai seçimden sonra uygular; tani.ilkNEklenen eklendi. Dev mock yolu da artık kuralı uyguluyor.
  2. Denetim betiği yazıldı ve koşuldu: scripts/eval/revizyon-denetim.ts → 5/5 geçti, çıkış 0 (sahte model önceliği kasten atlar; gerçek model ölçülmedi).
  3. Şartnamedeki senaryo 1 params'ı ile "ilkNEklenen === 5" ölçülemez — önemli ürün bulgusu: "ilk 5 İstanbul" istenince havuz kırpması (rapor-havuzu.ts, dilim başına 20, öncelikli önce) havuzu 60/60 İstanbul yapıyor; model başka il seçemiyor, 24 satırın hepsi İstanbul çıkıyor. Bu Paket C'nin dosyasında (dokunmadım); ayrıntı "Sapmalar" ve "Backlog"da.
  4. Doğrulama: next typegen + tsc --noEmit temiz; benim üç dosyamda ESLint hatası yok; tasarim:denetim 0 hata. pnpm lint tüm ağaçta kırık, ama tek kaynak .claude/worktrees/*/.next/types/* (paralel ajanların worktree typegen çıktısı) — bana ait değil.
  5. Regresyon: akis-denetim.ts 7/7 geçti. raporUretAyrintili imzası değişmedi (4 parametre); eval:robot etkilenmez.

Commit'ler

Hash Mesaj Dosyalar
62994d7 fix(revizyon): "ilk N" ölçütü seçimde kodla garanti ediliyor; mock yolu da kuralı uyguluyor src/lib/revizyon-kurali.ts, src/lib/ai/rapor.ts
71294e1 test(revizyon): mekanik ilk-N denetimi (sahte model önceliği atlar) scripts/eval/revizyon-denetim.ts (yeni)

Bu rapor commit'e dâhil değil. Başkalarının kirli dosyalarına (.claude/settings.json, AGENTS.md, data/app.db, docs/ekip-raporlari/) dokunulmadı.

Değişiklik ayrıntısı

src/lib/revizyon-kurali.ts

  • ilkTercihleriGarantile<S>(secim, havuz, k, uyum, yeniSatir) → { secim, eklenen }. Şartnamedeki imza birebir. Takas kuralı: öncelikli adaylar uyum azalan sırada; her aday kendi diliminde, uymayan satırlar arasından önce kodla gelen (kaynak !== "model"), sonra en düşük uyumlu satırı çıkarır. Seçimi boş dilimde takas yok. Havuz yetmezse eldeki kadarı. Girdi dizileri kopyalanır (saf).
  • Modül başlığı 2. madde güncellendi; DILIMLER sabiti ve Dilim tipi eklendi.

src/lib/ai/rapor.ts

  • RaporTani.ilkNEklenen: number eklendi.
  • nihai, enIyi üzerine garanti takası uygulanarak kuruluyor; onarim.tamamlanan += eklenen. Küçük sapma: onarim.modelSecimi nihai seçimden yeniden sayılıyor (kaynak !== "tamamlandi"), çünkü takas model satırı çıkarabiliyor ve sayı aksi hâlde yalan söylerdi. Şartname yalnız tamamlananı istemişti.
  • mockRapor(havuz, params, revizyonNotu, oncelikli): dilim içi sıralama öncelikliyi önce alır (eşitte taban sırası), sonunda ilkTercihleriOneAl uygulanır. Mock çağrısına oncelikli geçildi.
  • Kullanıcı mesajındaki "EN AZ N tane seç" cümlesi olduğu gibi kaldı.

scripts/eval/revizyon-denetim.ts (yeni; akis-denetim.ts deseni)

  • Sahte OpenAI ucu (AI_BASE_URL/AI_API_KEY sahte, OPENROUTER_API_KEY/TYPESAFE_API_KEY silinir), app.db gerekmez, data/yokatlas.db salt okunur. İstekten response_format.json_schema.schema.properties.*.minItems ve kullanıcı mesajındaki ADAY HAVUZU … : {…} JSON'u okunur; her liste kasten oncelikli olmayan id'lerle doldurulur (yetmezse öncelikliyle tamamlanır, atlanan sayısı loglanır).
  • Senaryolar ve sonuç:
Senaryo Params Beklenti Sonuç
ilk5-istanbul 100.000 say, ANKARA+İZMİR, ilk 5 İSTANBUL ilk 5 İstanbul, 24 satır, dilim adetleri = kapsam.dagilim ✔ (ilkNEklenen 0 — havuz 60/60 İstanbul, takas gerekmedi)
ilk5-takas aynı, ilk 5 YALOVA ilk 5 Yalova, ilkNEklenen === 5 ✔ (sahte uç 11 öncelikliyi atladı, kod 5 takasladı)
ilk3-vakif 100.000 say, KAYSERİ, ilk 3 vakıf ilk 3 vakıf, ilkNEklenen === 3 ✔ (havuz 41, hedef 7/8/9; 8 vakıf atlandı, 3 takaslandı)
havuz-yetersiz ilk 10 ARDAHAN hata yok, 24 satır, Ardahan'lar başta, ilkNEklenen ≤ 10 ✔ (2 Ardahan, ilkNEklenen 2)
mock-yolu AI_API_KEY silinmiş, ilk 5 YALOVA ilk 5 Yalova, tani === null, devMock ✔

Kabul kriterleri (B-3)

  • pnpm tsx --conditions=react-server scripts/eval/revizyon-denetim.ts → ✔ 5/5, çıkış 0 (koşuldu). Şartname "4/4" demişti; 5 senaryo var (gerekçe aşağıda).
  • pnpm tsx --conditions=react-server scripts/eval/akis-denetim.ts → ✔ 7/7 (koşuldu).
  • pnpm exec next typegen && pnpm exec tsc --noEmit → ✔ temiz (koşuldu).
  • pnpm lint → ✘ tüm ağaçta kırık, benim dosyalarımda ✔. pnpm exec eslint src/lib/revizyon-kurali.ts src/lib/ai/rapor.ts scripts/eval/revizyon-denetim.ts sıfır hata; pnpm tasarim:denetim 0 hata / 12 uyarı (hepsi başka dosyalarda, önceden var). Tam pnpm lint 576 sorun (312 hata) gösteriyor; dosya listesi yalnız .claude/worktrees/agent-*/.next/types/{validator.ts,routes.d.ts} — paralel ajan worktree'lerinde typegen çıktısı, eslint.config bu klasörü ignore etmiyor. İlk denemede ayrıca src/components/tema-kisayolu.tsx için ENOENT çıktı (dosya glob anında vardı, okunurken yoktu; başka ajan taşımış/silmiş). İkisi de dışsal.
  • raporUretAyrintili dört parametre, eval:robot çağrı imzası değişmedi → ✔ koddan çıkarım (robot.ts:205 çağrısı aynı; eval:robot anahtar istediği için koşulmadı).

Şartnameden sapmalar

  1. Senaryo 1 beklentisi (ilkNEklenen === 5) karşılanamaz ve senaryo sayısı 5. Şartnamenin params'ıyla (iller: ["Ankara","İzmir"], ilk 5 İstanbul) iki şey oluyor: (a) il adları DB'de büyük harf (İSTANBUL), rapor-havuzu.ts:314 ilFiltre tam eşleşme yapıyor; "Ankara" yazılırsa süzgeç boş kalıp havuz "il gevşet" ile tüm ülkeye açılıyor — gerçek akışta sorun değil (sihirbaz ve liste_revize'nin ilAdiNormalize'ı DB biçimini yazıyor; scripts içinde doğruladım), ama test params'ı büyük harf olmalı. (b) DB biçimiyle bile havuz kırpması (PROMPT_LIMIT_DILIM = 20, kirpVe önceliklileri öne alıyor) İstanbul'u 60/60 dolduruyor; sahte uç öncelikli olmayan satır bulamıyor, takas tetiklenmiyor. Bu yüzden şartnamenin senaryosu aynen kaldı (Bilal'in gerçek denemesi; ilk 5 İstanbul ✔) ve takası kesin tetikleyen ek senaryo (ilk5-takas, Yalova: havuza 0/3/8 öncelikli sokuyor, her dilimde sıradan satır hedefin üstünde) eklendi. Vakıf senaryosu da aynı nedenle tek il (KAYSERİ) ile kuruldu; ANKARA+İZMİR'de vakıf her dilimde 20/20 öncelikli çıkıyor.
  2. onarim.modelSecimi nihai seçimden yeniden sayılıyor (yukarıda).
  3. mock-yolu senaryosu İstanbul yerine Yalova params'ı kullanıyor: İstanbul'la mock'un öncelik sıralaması hiç sınanmazdı (havuz zaten tamamen İstanbul).

Önemli bulgu — kapsam dışı, Paket C / CTO'ya

"İlk 5'i İstanbul yap" → 24 satırın hepsi İstanbul oluyor. rapor-havuzu.ts:343-347 öncelikliyi kırpmada dilim başına 20 kotanın tamamına yayıyor; İstanbul gibi her dilimde 20+ programı olan il havuzu tek başına dolduruyor, model/kod başka il seçemiyor. Kullanıcı "ilk 5" istedi, geri kalan 19'un sihirbaz illerinden (Ankara/İzmir) gelmesini bekler. Önerilen düzeltme (C'nin dosyası, bu turda dokunmadım): kırpmada öncelikliye dilim başına ilkTercihler.adet (+ küçük pay) kadar yer ayır, kalanı sihirbaz sırasıyla doldur. Garanti takası (bu paket) bu düzeltmeyle birlikte asıl işini görür: havuz karışık olunca model öncelikliyi atlasa bile kod N'yi tamamlar. efektifParams'ın İstanbul'u süzgece eklemesi doğru; sorun yalnız kırpma kotası.

Merge sonrası doğrulanması gerekenler

  • Entegrasyonda pnpm build (bu turda koşulmadı, kural gereği).
  • scripts/eval/revizyon-denetim.ts ve akis-denetim.ts entegrasyon dalında tekrar (C rapor-havuzu.ts'yi değiştirirse ilk5-takas/ilk3-vakif senaryolarının havuz dağılımı değişebilir; beklentiler ilkNEklenen === 5/3 sabit — havuz yine karışıksa tutar).
  • pnpm lint için .claude/worktrees klasörünün eslint.config ignore listesine alınması (orkestratör / bir satırlık iş).
  • Gerçek modelle: pnpm eval:sohbet'e "ilk 5'i İstanbul'a göre güncelle" araç-argümanı senaryosu (B-5, yapay-zeka-muhendisi).

Backlog önerileri

  1. rapor-havuzu.ts kırpmada öncelikli kotası (yukarıdaki bulgu) — yüksek; aksi hâlde "ilk N" isteği tüm listeyi o ile çeviriyor.
  2. eslint.config: .claude/worktrees/** ignore.
  3. revizyon-denetim.ts senaryo seçimi havuz dağılımına bağlı; rapor-havuzu kotası değişince senaryo params'ı yeniden ölçülmeli (betiğin başındaki yorum anlatıyor).

Notlar

  • Next'e özgü API'ye dokunulmadı; node_modules/next/dist/docs/ okunmadı (gerek yoktu).
  • UI yok; DESIGN.md kapsam dışı. Para/giriş/kişisel veriye dokunulmadı.
  • Yıkıcı git komutu kullanılmadı; git add yol vererek yapıldı.

Bilal'den istenen

  1. "İlk 5 İstanbul" dendiğinde kalan 19 satırın sihirbaz illerinden (Ankara/İzmir) gelmesi mi istenir, yoksa listenin tamamının İstanbul'a kayması kabul mü? (tek cümle, 1 dk) — cevap Paket C/CTO'nun kırpma kotası işini açar ya da kapatır.