Durable artifact, resume pattern ve GitHub eşlemesi
Durable artifacts, resume pattern, and GitHub mapping
Bu derste neler öğreneceksin
- Durable artifact tanımının üç kriterini ezberlemek (kalıcı, audit, standart erişim)
- Agent state'inin GitHub artifact'larına nasıl mapping yapıldığını görmek
- Resume pattern'inin "repeating steps" ve "diverging from prior decisions" risklerini önlemesini anlamak
- Actions artifact ile PR description arasındaki kullanım farkını bilmek
Domain 3.2 — agent state’i kalıcı tutma ve devam ettirme. Sınavın “agent yarıda kaldı, ne yapılır” senaryoları bu derste işlenir.
Durable artifact — üç kriter
Bir veri “durable artifact” sayılıyor mu testi:
| Kriter | Açıklama | Pozitif örnek | Negatif örnek |
|---|---|---|---|
| Kalıcı | Oturum/process bitince kaybolmaz | Repo dosyası, PR description | Agent RAM state |
| Audit-uygun | Zaman damgalı, kim/ne kayıtlı | Commit, audit log | Slack DM (retention belirsiz) |
| Standart erişim | Geliştirici aracında okunabilir | Actions artifact, issue | Private gist |
Üçü birden olmalı. İkisi varsa yetmez.
GitHub’da durable artifact türleri (Domain 3’e mapping)
| Veri | GitHub artifact | Niye |
|---|---|---|
| Karar (decision) | PR description, issue, ADR dosyası | Markdown render + diff + history |
| İlerleme (progress steps) | Commit history, PR commit listesi | Atomik adımlar + tarih |
| Plan dosyası | plan.yaml repo’da + PR description’a kopya | Versionlanır + linklenebilir |
| Ara çıktı (intermediate output) | Actions artifact (upload-artifact) | Workflow run’a bağlı, indirilebilir |
| Custom state | Repo dosyası (.state/agent-state.json) | Diff’lenebilir, audit’e dost |
| Trace (tool çağrı zinciri) | Actions artifact JSON (upload-artifact) | Büyük, indirilebilir |
| Yan görüşmeler | Issue/PR comments | Diyalog kayıtlı |
Resume pattern’i — repeat + diverge engellemek
Domain 3.2 bullet: “Resume agent work without repeating steps or diverging from prior decisions”.
İki risk:
- Repeating — agent zaten yapılmış adımı tekrar yapar (örn. tekrar PR açar, tekrar branch oluşturur)
- Diverging — agent önceki kararın aksine karar verir (örn. “library X kullanılacak” demişti, şimdi Y kullanır)
Repeat’i engellemek: done-step kaydı
Her tamamlanmış step için kalıcı kayıt:
# .state/agent-progress.yaml (commit'lenir veya Actions artifact)
task_id: "issue-123-fix"
steps_done:
- id: 1
completed_at: "2026-05-16T10:23:00Z"
output_ref: "commit:abc1234"
- id: 2
completed_at: "2026-05-16T10:24:30Z"
output_ref: "commit:def5678"
next_step: 3
Resume’da agent önce bu dosyayı okur, next_step’ten devam eder.
Diverge’i engellemek: decision history
Plan’da alınan kararlar PR description’da kalır:
plan:
decisions:
- id: 1
decision: "Use library X (not Y)"
reason: "X supports streaming, Y does not"
timestamp: "2026-05-16T10:00:00Z"
Resume’da agent decisions listesini okur — yeni karar gerekiyorsa explicit override ile yazar:
plan:
decisions:
- id: 1
decision: "Use library X (not Y)"
...
- id: 2 # OVERRIDE
decision: "Switch to library Y"
reason: "X has critical bug discovered today"
overrides: 1
timestamp: "2026-05-16T14:00:00Z"
Sınavda “resume’da agent eski kararı değiştirebilir mi?” sorusunun cevabı: evet, ama explicit + sebepli (sessiz değişim = diverge).
Actions artifact vs PR description — ne zaman hangisi?
| Veri tipi | Yer | Neden |
|---|---|---|
| Plan (yapılandırılmış, kısa) | PR description (YAML blok) | Diff’lenebilir, görünür |
| Karar gerekçeleri | PR description veya ADR dosyası | Markdown render |
| Büyük trace/log (10MB+) | Actions artifact | PR description’a sığmaz |
| Generated source code | Repo (commit’lenir) | Code review akışında |
| Geçici test output | Actions artifact (retention 30 gün) | Audit gerekli değil |
| Compliance kaydı | Repo dosyası veya audit log | Kalıcı + erişilebilir |
Pattern: “system of record”
Bir veri için tek bir doğruluk kaynağı belirle. Diğer tool’lar oradan okur, kendi kopyasını tutmaz veya periyodik sync yapar.
GitHub’da typical seçimler:
- Plan ve kararlar → PR description
- İlerleme state → repo dosyası (
.state/) + Actions artifact (backup) - Konfigürasyon → repo dosyası
- Tarihsel iz → audit log + commit history
Sınavda “tool’lar farklı versiyonlar tutuyor” sorusunda cevap system of record kuralı + tek kaynak.
Anti-pattern: bellek dump
“Agent’ın in-memory state’ini bir blob’a yaz, resume’da geri yükle” — GH-600 perspektifinden anti-pattern:
- Audit zayıf (blob okunamaz)
- Diff’lenemez
- GitHub native değil
- Recovery zor (corrupt olursa total kayıp)
Doğrusu: structured artifact (YAML/JSON) + repo veya Actions artifact.
Mini quiz — Durable artifact (3 soru)
Sırada ne var?
Bir sonraki derste drift detection, stale context önleme, multi-tool continuity — Domain 3.3’ün üç bullet’ı.