"CSV dışa aktarımı düzeltildi, yalnızca kontrol etmek kaldı" ve iş burada bitti. Ertesi gün projeyi açıyorsunuz ama hangi dosyaların değiştiğini, dışa aktarımın hangi sürümde incelendiğini ve kontrolün nerede kaldığını bilmiyorsunuz.
Baştan araştırma yapmadan devam etmek için sonraki aşamanın kaydedilmiş sonuca, kontrollerle ilgili bilgilere ve sıradaki adıma ihtiyacı var. Bu devri tek bir görev üzerinden ele alalım: işi tek bir oturum, birkaç uygulayıcı ya da siz iki ayrı seferde yürütebilirsiniz.
Açıp inceleyebileceğiniz bir sonuç devredin
Alışveriş listesindeki CSV dışa aktarımı bozuk. Gereksinim şu: dışa aktarılan dosyada yalnızca ekranda gösterilen satırlar bulunmalı ve sıraları korunmalı. Liste boşsa veri satırı olmadan yalnızca başlık satırının kalması kararlaştırıldı. Sütun biçimini ve ayırıcıyı değiştirmek gerekmiyor.
"Düzeltildi, kontrol edilmesi kaldı" demek yerine, değişiklikleri bulup çalışmaya devam etmenizi sağlayacak bir kayıt bırakalım. Aşağıdaki hash'ler ve sonuçlar varsayımsaldır: bu eğitim amaçlı bir örnek, arkasında gerçek çalıştırmalar yok.
HANDOFF
Amaç: CSV yalnızca mevcut sıralarıyla ekranda gösterilen satırları içermeli.
Girdi sürümü: 4f1c2ab temel commit'i.
Devredilen durum: fix-export dalındaki 9d3e740 commit'i, ek değişiklik yok.
Sonuç: src/export-csv.js - dışa aktarım, filtreleme ve sıralama sonrasındaki listeyi kullanıyor.
9d3e740 üzerinde elle kontrol edildi: kaynak kayıtlar A, B, C; ekranda C, A;
CSV'deki veri satırları C, A; B kaydı yok. Başlık bir kayıt sayılmaz.
Kontrol edilmedi: boş liste; "yalnızca tamamlanmamışlar" modu.
Karar: sütun biçimi ve ayırıcı değiştirilmeyecek.
Sonraki adım: ana oturum kalan iki senaryoyu kontrol edecek.
Genel görev durumu: kontrol tamamlanmadı.Harfler listedeki üç kaydı temsil ediyor. Senaryo iki özelliği birden kontrol ediyor: gizli B kaydı dışa aktarımda yok ve C, A sıralaması ekrandakiyle aynı. Toplam iki kayıtlı bir listeden iki satır almak yeterli değil; filtreleme yapmayan dışa aktarım da aynı sonucu verir.
Kaydı HANDOFF.md dosyasında saklayabilir veya mevcut görev belgesine ekleyebilirsiniz. Zorunlu bir alan standardı yok. Önemli olan, önceki konuşmaya erişimi olmasa bile sonraki uygulayıcının gerekli dosyalarla birlikte kaydı açabilmesidir.
Kontrol bir komutla yapıldıysa, komutu gerçek sonucuyla ve kod sürümüyle birlikte belirtin. "12 testten 12'si geçti" ifadesi hangi davranışın kontrol edildiğini açıklamaz. Elle yürütülen bir senaryoda, yukarıdaki örnekte olduğu gibi girdi verileri, yapılan işlem ve gözlem gerekir.
İlk taslağı Claude Code'a hazırlatabilirsiniz: "Mevcut dosyalara ve tamamlanan kontrollere dayanarak bir devir kaydı hazırla. Gerçekleri varsayımlardan ayır. Hangi durumun kontrol edildiğini, nelerin kaldığını ve nereden devam edileceğini belirt. Tamamlanmamış kontrolleri başarılı diye gösterme." Kullanmadan önce sürümü dosyalarla, sonuçları da elle yapılan kontrolün kayıtlarıyla veya komut çıktısıyla karşılaştırın.
Girdi ve çıktı koşullarını belirleyin
Sonraki aşama, elindeki bilgilerin yeterli olup olmadığını anlayabiliyorsa devir işe yarar. Bizim görevimiz için bunu üç satırda açıklayabiliriz.
| Aşama | Girdi | Çıktı | Kabul koşulu |
|---|---|---|---|
| Netleştirme | Gereksinim ve mevcut dosyalar | Koda referans veren hata nedeni, beklenen davranış | Hangi satırların, hangi sırayla dışa aktarılacağı ve liste boşken ne olacağı belirlenmiş |
| Değişiklik | Üzerinde anlaşılan davranış ve girdi sürümü | Dışa aktarım değişikliği ve yerel kontrole ilişkin kayıt | Kaydedilmiş duruma erişilebiliyor, değişen dosyalar belirtilmiş, kontrol edilenler edilmemişlerden ayrılmış |
| Kontrol | Devredilen durum ve senaryolar | Her senaryoya ilişkin gözlemler, kısıtlamalar ve notlar | Sonuçlar devredilen sürüme ait; her senaryonun sonucu var ve notlarda sonraki adım belirtilmiş |
Buradaki asıl sütun en sağdaki. Kontrole geçerken "kontrole başlayabilir miyiz?" sorusunu yanıtlar. Tamamen açıklanmış bir değişiklik bile yanlış olabilir. Kontrol tamamlandığında da düzeltilmesi gereken bir hata bulunabilir; işe yarar bir raporun başarılı sonuç bildirmesi şart değildir.
Sürüm belirtilmemişse önce dosyaların mevcut durumunu belirleyin. Durumu kontrol edebilirsiniz ama eski raporu karşılaştırmadan bu sürüme uygulayamazsınız. Aşamalar için ayrı ajanlar veya belgeler gerekmez: küçük bir görev, tek bir notla aynı oturumda üç aşamadan da geçebilir.
Kabul edilen durumu kaydedin
Devirde üç farklı şey kolayca birbirine karışır:
- kaydedilmiş kod durumu - geri yükleyebileceğiniz belirli bir sürüm;
- çalışma notu - ne yapıldığı, nelerin kontrol edildiği ve nelerde anlaşıldığı;
- sonucun kabulü - yapılanların hedef için yeterli olduğuna dair karar.
Commit, içine kaydedilmiş dosyaları gösterir. Ancak sonrasında ek değişiklikler kaldıysa bu referans artık devredilen durumun tamamını açıklamaz: bu değişiklikleri de kaydedip yeni dosyalar dahil ayrıca belirtmeniz gerekir. Bir değişiklik kümesini devrederken onu hangi başlangıç sürümüne göre değerlendirdiğinizi de yazın. Yalnızca dalı belirtmek yetmez; dal değişmeye devam eder.
Şöyle düşünün: kayıtta 9d3e740 yazıyor ama dışa aktarım dosyası bu commit'ten sonra düzenlenmiş. Devralan taraf tanıdık bir hash görür ama farklı bir kodla çalışır. Önce neyin değiştiğini bulur. Değişiklik satırların seçimini veya sırasını etkilediyse C, A için önceki kontrol mevcut davranışı doğrulamaz. Yalnızca yorum metni değiştiyse bu, tek başına senaryoyu tekrarlamak için gerekçe değildir.
Her adımdan sonra commit atmanız veya kendi değişikliklerinizle başkalarınınkini tek bir commit'te toplamanız gerekmez. Önemli olan, devredilen durumun tamamının mevcut ve devralan tarafın erişimine açık olmasıdır; nasıl kaydedileceğini proje kuralları belirler. Dosyalar yerinde değilse önce kaydedilmiş sürümü kontrol edin. Değişiklikler hiçbir yere kaydedilmediyse tek bir not onları geri getiremez.
Konuşmayı sürdürmek, dosyaları kendi başına açıklanan sürüme geri döndürmez. Claude Code'un değişiklik anlık görüntüleri de tüm değişiklikleri kapsamaz: Bash üzerinden yapılan düzenlemeler izlenmez, diğer uygulayıcıların değişikliklerini geri yüklemenin de kısıtlamaları vardır. Bu nedenle devir, kaydedilmiş dosyalara ve bunların sürümüne dayanır. Ayrıntılar: Checkpointing.
Durmanın nedenini belirleyin
"İşe yaramadı" demek, en az üç farklı durumu anlatabilir.
Yerel çalıştırma kesildi. Komut tamamlanmadı veya kontrol yarıda kaldı. Önce nelerin tamamlandığını ve neyin değiştiğini öğrenin. Sorun giderildiyse ve tekrar etmek tamamlanan işlemi yinelemeyecekse bitmemiş adımı yeniden deneyebilirsiniz. Örneğimizde bir kez yeniden denemeyi kararlaştıralım; o da kesilirse durma nedenini ve devam etmek için gerekenleri kaydedelim. Sınır işlemin türüne bağlıdır; durmadan tekrarlamak hiçbir şeyi açıklamaz.
Beklenen davranış net değil. Örneğin, uygulayıcı filtre açıkken hangi satırların gösterilmiş sayılacağını bilmiyor. Önce kaydedilen gereksinime bakar. Orada yanıt yoksa gereksinimden sorumlu kişiye bir soru yöneltir. Düzeltmeye ancak yanıt geldikten sonra devam edilebilir; komutu yeniden çalıştırmak bunun yerini tutmaz.
Yeni bir bilgi kabul edilen kararı geçersiz kıldı. CSV'yi başka bir programın okuduğu ortaya çıktı. Netleştirmeden sonra farklı bir sütun düzeni üzerinde anlaşıldı ve sıralama gereksinimi kaldırıldı. Çalışma netleştirme aşamasına döner: yeni ölçütü kaydetmek, ona bağlı değişikliği ve kontrolleri yeniden değerlendirmek gerekir. Daha önce yürütülen senaryo yararlı olabilir ama artık güncellenen görevin tamamını doğrulamaz.
Burada başlangıçtaki karar değiştiği için iş netleştirmeye dönüyor. Gereksinim aynı kaldıysa ve hata uygulamada bulunduysa değişiklik aşamasına dönmek yeterlidir. Etkilenen karara bağlı sonuçlar yeniden değerlendirilir.
Güncel noktadan devam edin
Çalışmaya yeniden başlarken şu beş adımı izleyin:
- kontrol edilmemiş olanlar dahil devir kaydının tamamını okuyun;
- devredilen durumu erişilebilir dosyalar ve ek değişikliklerle karşılaştırın;
- varsa kesilen işlemin sonucunu öğrenin;
- önceki sonuçlardan hangilerinin hâlâ geçerli olduğunu belirleyin;
- sıradaki tamamlanmamış adımı yürütüp kaydı güncelleyin.
Gereksinimlerin değişmediği ilk örneğe dönelim. Sonraki oturum devir kaydını açıp durumu karşılaştırdı: 9d3e740 commit'ine erişilebiliyor, ek değişiklik yok, veriler ve kontrol koşulları aynı. C, A senaryosu zaten tamamlanmış ve sonucu hâlâ geçerli. Düzeltmeyi yeniden yazmaya gerek yok.
Şimdi devralan taraf boş listeyi kontrol ediyor. Görev koşuluna göre CSV'de veri olmadan yalnızca başlık satırı kalmalı. Eğitim amaçlı devam örneğimizde de sonuç tam olarak bu. Kayda sonucu ekleyip kalan adımı güncellemek yeterli:
9d3e740 üzerinde elle kontrol edildi: boş listenin dışa aktarımında yalnızca başlık var.
Daha önce kontrol edilen C, A senaryosu geçerliliğini koruyor.
Kontrol edilmedi: "yalnızca tamamlanmamışlar" modu.
Sonraki adım: ana oturum bu modu kontrol edecek.
Genel görev durumu: kontrol tamamlanmadı.Devir kaydı, çalışmayla birlikte değişti. Kalan iki senaryodan biri tamamlandı, diğeri hâlâ listede. Kısmi sonuç ilk hedefi tamamlamaz; kontrolü başka bir göreve taşımak için kapsamı değiştirmeye yönelik ayrı bir karar gerekir.
Çalıştırma yarıda kesildiyse, kesilen senaryoyu baştan yürütmeniz gerekebilir: her araç ortasından devam etmeyi desteklemez. Önceden tamamlanan kontroller, ilgili kod, girdi verileri ve koşullar güncel kaldığı sürece geçerliliğini korur.
Sonuç mesajı gelmese bile işlem tamamlanmış olabilir. Veri gönderimini, yayını veya dosyaya yazmayı tekrarlamadan önce işlemin zaten gerçekleşip gerçekleşmediğini öğrenin. İşlemin nerede yapıldığı hiçbir şeyi garanti etmez: yerel bir komut da aynı veriyi ikinci kez ekleyebilir. Sonuç bilinmiyorken işlemi tekrarlamak, durumu kontrol etmenin yerini almamalı.
Devir kaydını kim hazırlar?
Claude Code bilgileri toplayabilir, sonraki aşamanın girdilerini karşılaştırabilir ve üzerinde anlaşılmış adımı yürütebilir. Kaydın dosyalarla ve çalıştırma sonuçlarıyla uyuşup uyuşmadığını siz kontrol edersiniz. Tartışmalı gereksinimler ve kapsam değişiklikleri bir insan ya da atanmış sorumlu tarafından karara bağlanır; sürecimizde nihai kabul de insanda kalır.
Kaydedilmiş bir sürüm çalışmaya devam etmenizi sağlar ama uygulayıcının yetkilerini genişletmez. Dışa aktarımı kontrol etmesi istendiyse, geri yükleme noktasının bulunması sütun biçimini de değiştirebileceği anlamına gelmez. Görevin sınırları devirden sonra da geçerlidir.
GO TO FULL VERSION