diff --git a/docs/eval-inceleme.md b/docs/eval-inceleme.md new file mode 100644 index 0000000..8fa4d30 --- /dev/null +++ b/docs/eval-inceleme.md @@ -0,0 +1,30 @@ +# Eval görevi inceleme kontrol listesi + +Durum: v1 · 2026-10-03. Adım F'nin üçüncü katmanı (otomatik kapılar ve ampirik süzgeçten sonra). İnceleyen: Claude. İşaretlenen görevler + kategori başına 1 örnek Kral'a gider. + +Yardımcı: `python3 -m harness.review G0100` görevin spec'ini, sözleşmesini, gizli test isimlerini, mutasyon sonucunu ve üretim geçmişini tek ekranda verir. Sonuç `tasks_gen/eval//review.json`'a yazılır. + +## Kontroller + +| # | Kontrol | Sonuç değerleri | +|---|---|---| +| 1 | **Spec netliği:** her iş kuralı tek anlamlı. Sınır değerleri (eşit, boş, negatif) tanımlı. H dışında açık soru yok. | ok / belirsiz | +| 2 | **Kural–test eşlemesi:** her iş kuralı en az bir gizli testle ölçülüyor; her gizli test bir kurala dayanıyor (spec'te olmayan davranış test edilmiyor). | ok / eksik test / fazla test | +| 3 | **Kontrat yeterli:** gizli testlerin kullandığı her isim (obje, metot, parametre, tip, eleman) spec'in Contract bölümünde. | ok / eksik | +| 4 | **Zanaat serbest:** spec nasıl yapılacağını söylemiyor (tablo tipi, SQL stratejisi, sınıf iç yapısı). | ok / ipucu var | +| 5 | **Gerçekçilik:** iş konusu ve büyüklük gerçek bir ABAP işine benziyor; yapay bulmaca değil. | ok / yapay | +| 6 | **Kategori uyumu:** görev, kategorinin ölçtüğü beceriyi ölçüyor (ör. D'de exception tasarımı gerçekten gerekli; F'de seed objesi okunmadan çözülemiyor; G'de eski release kısıtı anlamlı). | ok / zayıf | +| 7 | **Mutasyon:** `mutation.json` ok; hayatta kalan mutant varsa gerçek bir test boşluğu mu? | ok / boşluk | +| 8 | **Sızıntı:** spec veya seed referans çözümü ele vermiyor (kod parçası, yöntem adımları). | ok / sızıntı | +| 9 | **H görevleri:** eksik gerçekten kritik (tahminle çözülemez); `expected_gap` açıklaması doğru; anahtar kelime grupları yanlış bir nedenle duran raporu kabul etmiyor. | ok / zayıf | +| 10 | **K görevleri:** serbest metin bütün kuralları ve tüm sözleşme isimlerini koruyor; temel görevle aynı gizli testler geçerli. | ok / kayıp | +| 11 | **Tekrar:** başka bir eval görevine çok benziyor mu (aynı iş konusu ve aynı kurallar)? | ok / tekrar | + +## Karar + +- **kabul:** tüm kontroller ok. +- **düzelt:** küçük, açık bir düzeltme (spec cümlesi, test adı, eksik test). Düzeltmeden sonra oracle/null/mutasyon tekrar koşulur; `generation.json`'a `manual_fix` adımı yazılır. +- **işaretle (Kral):** karar Claude'un tek başına vereceği bir şey değil (gerçekçilik, kategori uyumu tartışmalı, H eksiği tartışmalı). +- **ret:** 2, 3 veya 8'de büyük sorun; düzeltme görevi yeniden yazmak demek. + +Eval görevleri eğitim verisine girmez; Claude'un yaptığı düzeltmeler de sadece eval setinde kalır. diff --git a/harness/generator.py b/harness/generator.py index 16c0e9e..7524827 100644 --- a/harness/generator.py +++ b/harness/generator.py @@ -30,10 +30,17 @@ CATEGORIES = { "B": "database access (ABAP SQL, CDS) with test doubles", "C": "internal table craft (table kind, keys, access path)", "D": "exception design (class-based exceptions, messages)", - "E": "refactoring legacy code (seed contains legacy code; behavior must stay the same)", + "E": "refactoring legacy code: the seed contains legacy code, and the contract object IS this seed object " + "(refactor it in place; same name and same public interface; it is not in out_of_scope). The spec " + "gives the quality goals and says 'the behavior stays the same'. It does not list the business " + "rules: the model must read the legacy code. Hidden tests check the unchanged behavior", "F": "use an unknown object: the spec names a seed object but not its signature; the model must read it", "G": "old release target (v702 or v740sp05): no newer syntax", - "I": "bug fix: the seed contains a faulty object; the spec describes the symptom", + "I": "bug fix: the seed contains a faulty object, and the contract object IS this seed object (fix it in " + "place; it is not in out_of_scope). The spec describes the symptoms and the expected behavior for " + "them, plus 'all other behavior stays the same'. The spec does not list all rules: the model must " + "read the existing code to keep the other behavior. Hidden tests check the fixed cases and the " + "unchanged behavior", "H": "stop task: the spec looks complete, but one business rule is missing or two rules contradict, and " "a correct solution is not possible without an answer. The model must stop, create no object and " "name the gap. task.json: expected_outcome \"stop\", expected_gap {\"description\": \"