Başarı kriteri, eval sinyalleri, otomatik tarama
Success criteria, evaluation signals, automated scanning
Bu derste neler öğreneceksin
- Expected outcome ve operational constraint'i ayrı tanımlamayı öğrenmek
- Nicel ve nitel sinyalleri birlikte kullanmayı kavramak
- GitHub'ın otomatik tarama araçlarını (CodeQL, secret, dep review) eval sinyali olarak yapılandırmak
- 'Geliştirme niyetiyle hizalı kriter' kuralı Goodhart's Law trap'ini önlemek
Domain 4.1 — eval’in temeli: ne ölçüyorsun, neyi başarı sayıyorsun. Yanlış kriter = optimize edilen yanlış şey.
Expected outcome ve operational constraint — ayrı şeyler
| Expected outcome | Operational constraint | |
|---|---|---|
| Soru | Ne üretmeli? | Nasıl çalışmalı? |
| Örnek | ”Tüm testler geçer" | "120 saniye içinde bitir, max 2GB RAM” |
| Eksikliği | Hedefsiz iş | Sınırsız resource kullanımı |
İkisi birlikte zorunlu. Domain 4.1: “Specify expected outcomes and operational constraints for agent tasks”.
Expected outcome örnekleri
- “PR’daki failing test’leri yeşillendir”
- “Issue’yu uygun label ile etiketleme”
- “Dependency major version bump için risk değerlendirme yorumu yaz”
Operational constraint örnekleri
- Latency: “agent görevi max 10 dakikada bitirir”
- Resource: “max 4GB RAM, 2 CPU”
- Token bütçe: “max 50K token / oturum”
- Yan etki: “main branch’e yazma yok”
- Network: “sadece allowlist’teki domain’lere erişim”
- Maliyet: “max $0.50 / görev”
Nicel ve nitel sinyaller — ikisi birden
Nicel sinyaller (sayılabilir)
| Sinyal | Kaynak |
|---|---|
| Test pass rate | CI test runner |
| Test coverage % | coverage tool |
| Lint error count | linter |
| CodeQL finding count + severity | CodeQL |
| Secret scanning alerts | secret-scanning |
| Dependency vulnerability count | dependency-review |
| PR review yorumu sayısı | GitHub API |
| PR merge time | GitHub API |
| Agent task completion time | Actions runtime |
Nitel sinyaller (yargısal)
| Sinyal | Kaynak |
|---|---|
| Code review yorumu içeriği | İnsan |
| ”Bu PR mantıklı mı” assessment | İnsan |
| Approach uygunluğu | Architect review |
| Edge case handling | QA |
Trap (Goodhart’s Law): Sadece nicel metric kullanırsan agent metric’i optimize eder ama amaç kaybolur. Örnek: “satır sayısını azalt” → okunaksız tek-satır kod. Nitel + nicel birlikte gerekli.
Geliştirme niyetiyle hizalı kriter
Domain 4.1 bullet: “Align evaluation criteria with development intent”.
Yanlış hizalama örnekleri
| Yanlış kriter | Niyetle çelişme |
|---|---|
| ”Satır sayısını azalt” | Okunabilirlik kaybı |
| ”Test sayısını maksimize et” | Anlamsız test inflation |
| ”PR sayısını artır” | Mikro PR spam |
| ”Issue close hızı” | Acele kapatma, gerçek çözüm yok |
| ”Tek dosyaya sığdır” | Modülerite kaybı |
Doğru kriter pattern’i
agent_task:
goal: "Improve auth flow latency by 30%"
success_criteria:
quantitative:
- "p99 latency < 200ms (was 300ms)"
- "All existing auth tests pass"
- "No new CodeQL findings"
qualitative:
- "Code reviewer approves architecture"
- "No security review concerns"
operational_constraints:
- "No breaking changes to public API"
- "Backwards compatible for 1 release"
GitHub otomatik tarama araçları (Domain 4.1 spesifik)
Bullet: “Generate evaluation signals by using automated scanning tools”.
| Araç | Ne tarar | Eval sinyali | Setup |
|---|---|---|---|
| CodeQL | Semantic kod analizi (security, quality) | Finding count + severity | code-scanning.yml workflow |
| Secret scanning | Push’lanan secret’lar (token, key) | Sızıntı sayısı | Settings → Code security |
| Dependency review | PR’daki yeni dependency vulnerability + license | Vulnerability count + license risk | dependency-review-action |
| Dependabot | Outdated dependency + known CVE | Open Dependabot alert count | Settings → Code security |
| Actions test/lint job’ları | Test pass/fail, lint error | Pass rate, error count | Workflow |
CodeQL setup (örnek)
name: codeql
on:
pull_request:
branches: [main]
schedule:
- cron: '0 0 * * 0'
jobs:
analyze:
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: github/codeql-action/init@v3
with:
languages: javascript-typescript
- uses: github/codeql-action/analyze@v3
PR’a otomatik kontrol koyar. Finding varsa PR check ✗.
Dependency review
name: dependency-review
on: [pull_request]
permissions:
contents: read
pull-requests: write
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/dependency-review-action@v4
with:
fail-on-severity: high
comment-summary-in-pr: true
Sinyalleri eval döngüsüne bağlamak
Otomatik tarama tek başına faydalı değil — sinyaller agent’ın çıktısının değerlendirmesi olarak kullanılır:
Agent çıktı (PR)
↓
Tarama gate'leri (CodeQL, secret, dep review, test)
↓
PR check sonuçları = nicel eval sinyali
↓
Geçmedi mi? → Agent feedback'ı al, plan revize, retry
Geçti mi? → İnsan review (nitel sinyal)
↓
Approval → merge
Mini quiz — Success criteria & signals (3 soru)
Sırada ne var?
Bir sonraki derste RCA (root cause analysis) üçlü sınıflandırması derin — sınavın imza sorusu burada.