- 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>
9.5 KiB
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)
- 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.tsbunu nihai seçimden sonra uygular;tani.ilkNEkleneneklendi. Dev mock yolu da artık kuralı uyguluyor. - 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). - Ş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. - Doğrulama:
next typegen+tsc --noEmittemiz; benim üç dosyamda ESLint hatası yok;tasarim:denetim0 hata.pnpm linttü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. - Regresyon:
akis-denetim.ts7/7 geçti.raporUretAyrintiliimzası değişmedi (4 parametre);eval:robotetkilenmez.
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 adaylaruyumazalan sırada; her aday kendi diliminde, uymayan satırlar arasından önce kodla gelen (kaynak !== "model"), sonra en düşükuyumlu 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;
DILIMLERsabiti veDilimtipi eklendi.
src/lib/ai/rapor.ts
RaporTani.ilkNEklenen: numbereklendi.nihai,enIyiüzerine garanti takası uygulanarak kuruluyor;onarim.tamamlanan += eklenen. Küçük sapma:onarim.modelSeciminihai seçimden yeniden sayılıyor (kaynak !== "tamamlandi"), çünkü takas model satırı çıkarabiliyor ve sayı aksi hâlde yalan söylerdi. Şartname yalnıztamamlananı istemişti.mockRapor(havuz, params, revizyonNotu, oncelikli): dilim içi sıralama öncelikliyi önce alır (eşitte taban sırası), sonundailkTercihleriOneAluygulanır. Mock çağrısınaoncelikligeç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_KEYsahte,OPENROUTER_API_KEY/TYPESAFE_API_KEYsilinir), app.db gerekmez,data/yokatlas.dbsalt okunur. İstektenresponse_format.json_schema.schema.properties.*.minItemsve kullanıcı mesajındakiADAY HAVUZU … : {…}JSON'u okunur; her liste kastenoncelikliolmayan 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.tssıfır hata;pnpm tasarim:denetim0 hata / 12 uyarı (hepsi başka dosyalarda, önceden var). Tampnpm lint576 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.configbu klasörü ignore etmiyor. İlk denemede ayrıcasrc/components/tema-kisayolu.tsxiçin ENOENT çıktı (dosya glob anında vardı, okunurken yoktu; başka ajan taşımış/silmiş). İkisi de dışsal.raporUretAyrintilidört parametre,eval:robotçağrı imzası değişmedi → ✔ koddan çıkarım (robot.ts:205 çağrısı aynı;eval:robotanahtar istediği için koşulmadı).
Şartnameden sapmalar
- 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 ilFiltretam 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 veliste_revize'ninilAdiNormalize'ı DB biçimini yazıyor;scriptsiç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. onarim.modelSeciminihai seçimden yeniden sayılıyor (yukarıda).mock-yolusenaryosu İ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.tsveakis-denetim.tsentegrasyon dalında tekrar (Crapor-havuzu.ts'yi değiştirirseilk5-takas/ilk3-vakifsenaryolarının havuz dağılımı değişebilir; beklentilerilkNEklenen === 5/3sabit — havuz yine karışıksa tutar).pnpm lintiçin.claude/worktreesklasörününeslint.configignore 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
rapor-havuzu.tskırpmada öncelikli kotası (yukarıdaki bulgu) — yüksek; aksi hâlde "ilk N" isteği tüm listeyi o ile çeviriyor.eslint.config:.claude/worktrees/**ignore.revizyon-denetim.tssenaryo seçimi havuz dağılımına bağlı;rapor-havuzukotası 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 addyol vererek yapıldı.
Bilal'den istenen
- "İ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.