From 3550f0b651fe3c5706221ebab9129be3281c8637 Mon Sep 17 00:00:00 2001 From: Kral Date: Sat, 3 Oct 2026 06:23:38 +0200 Subject: [PATCH] Eval review v1: checklist, review helper, 24 tasks reviewed; G0002/G0022 tests fixed; I/E generator definitions - docs/eval-inceleme.md checklist; harness/review.py - 19 accept, 1 fix pending (G0019), 4 flagged (I/E tasks solvable without legacy code) - generator: categories I and E fix/refactor the seed object in place Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat --- docs/eval-inceleme.md | 30 +++++ harness/generator.py | 11 +- harness/review.py | 88 +++++++++++++++ .../faulty/m0_delivery_schedule.clas.abap | 4 +- .../faulty/m2_delivery_schedule.clas.abap | 104 ++++++++++++++++++ .../faulty/m3_delivery_schedule.clas.abap | 2 +- .../faulty/m4_delivery_schedule.clas.abap | 4 +- tasks_gen/eval/G0002/generation.json | 12 ++ .../eval/G0002/hidden/t02_hidden.clas.abap | 13 +++ tasks_gen/eval/G0002/mutation.json | 66 +++++++---- tasks_gen/eval/G0002/review.json | 7 ++ tasks_gen/eval/G0003/review.json | 7 ++ tasks_gen/eval/G0004/review.json | 7 ++ tasks_gen/eval/G0007/review.json | 7 ++ tasks_gen/eval/G0008/review.json | 7 ++ tasks_gen/eval/G0009/review.json | 9 ++ tasks_gen/eval/G0010/review.json | 7 ++ tasks_gen/eval/G0012/review.json | 7 ++ tasks_gen/eval/G0013/review.json | 9 ++ tasks_gen/eval/G0014/review.json | 7 ++ tasks_gen/eval/G0015/review.json | 7 ++ tasks_gen/eval/G0016/review.json | 9 ++ tasks_gen/eval/G0017/review.json | 7 ++ tasks_gen/eval/G0018/review.json | 7 ++ tasks_gen/eval/G0019/review.json | 9 ++ tasks_gen/eval/G0020/review.json | 7 ++ tasks_gen/eval/G0021/review.json | 7 ++ .../faulty/m4_expense_validator.clas.abap | 85 ++++++++++++++ tasks_gen/eval/G0022/generation.json | 12 ++ .../eval/G0022/hidden/d01_hidden.clas.abap | 14 +++ tasks_gen/eval/G0022/mutation.json | 24 ++-- tasks_gen/eval/G0022/review.json | 7 ++ tasks_gen/eval/G0023/review.json | 9 ++ tasks_gen/eval/G0024/review.json | 7 ++ tasks_gen/eval/G0025/review.json | 7 ++ tasks_gen/eval/G0026/review.json | 7 ++ tasks_gen/eval/G0168/review.json | 7 ++ tasks_gen/eval/G0178/review.json | 7 ++ 38 files changed, 607 insertions(+), 40 deletions(-) create mode 100644 docs/eval-inceleme.md create mode 100644 harness/review.py create mode 100644 tasks_gen/eval/G0002/faulty/m2_delivery_schedule.clas.abap create mode 100644 tasks_gen/eval/G0002/review.json create mode 100644 tasks_gen/eval/G0003/review.json create mode 100644 tasks_gen/eval/G0004/review.json create mode 100644 tasks_gen/eval/G0007/review.json create mode 100644 tasks_gen/eval/G0008/review.json create mode 100644 tasks_gen/eval/G0009/review.json create mode 100644 tasks_gen/eval/G0010/review.json create mode 100644 tasks_gen/eval/G0012/review.json create mode 100644 tasks_gen/eval/G0013/review.json create mode 100644 tasks_gen/eval/G0014/review.json create mode 100644 tasks_gen/eval/G0015/review.json create mode 100644 tasks_gen/eval/G0016/review.json create mode 100644 tasks_gen/eval/G0017/review.json create mode 100644 tasks_gen/eval/G0018/review.json create mode 100644 tasks_gen/eval/G0019/review.json create mode 100644 tasks_gen/eval/G0020/review.json create mode 100644 tasks_gen/eval/G0021/review.json create mode 100644 tasks_gen/eval/G0022/faulty/m4_expense_validator.clas.abap create mode 100644 tasks_gen/eval/G0022/review.json create mode 100644 tasks_gen/eval/G0023/review.json create mode 100644 tasks_gen/eval/G0024/review.json create mode 100644 tasks_gen/eval/G0025/review.json create mode 100644 tasks_gen/eval/G0026/review.json create mode 100644 tasks_gen/eval/G0168/review.json create mode 100644 tasks_gen/eval/G0178/review.json 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\": \"