Kalite, Test ve Operasyon
Uzun Yaşayan PR'lar, Kısa Yaşayan Mimariler: Değişikliğin Boyutu ve Ömrü
Uzun Yaşayan PR'lar, Kısa Yaşayan Mimariler
Haftalarca açık kalan PR'lar ve sürekli değişen mimariler aynı hastalığın iki belirtisi; 2026'da coding agent'ların PR hacmini artırıp incelemeyi darboğaza çevirmesiyle değişikliği küçük ve geri alınabilir tutmak daha da kritik hale geldi.
Değişiklik küçük ve kısa ömürlü, mimari kararlar ise kayıtlı ve uzun ömürlü olmalı; ikisini tersine çeviren ekip çatışma ve unutulmuş gerekçe biriktirir.
DORA, Google mühendislik pratikleri ve Fowler çizgisi bunu uzun süredir savunuyor; Agent kaynaklı PR hacmi ilkeyi zorunluluğa çevirdi, uzun feature branch savunucuları azınlıkta.
Zihinsel model
PR süt, mimari şarap: biri bekledikçe bozulur, öbürü değerini ancak zamanla gösterir.
Neden
- Açık kalan her gün ana dal PR'dan uzaklaşır; birikmiş çatışmayı çözerken yapılan hata kimsenin bakmadığı yerde çıkar.
- İnceleyici büyük PR'ı zihninde tutamaz; inceleme kalitesi boyutla ters orantılı düşer ve onay yüzeyselleşir.
- Mimarinin asıl maliyeti ekibin zihinsel modelinde ve operasyon bilgisinde durur; sık değişen karar bu birikimi her seferinde sıfırlar.
Kanıt
Coding agent benimseyen firmalarda PR'ın birleşmesine kadar geçen süre %49 uzadı.
Chen ve Stratton, Harvard, 2026Yüksek AI benimsemesinde PR boyutu %51 büyüdü ve hiç incelenmeden birleşen PR'lar arttı.
Faros AI, AI Engineering Report 2026DORA, trunk-based development'ı kısa ömürlü dallar ve ana dala günlük entegrasyonla tanımlıyor ve teslimat kapasitesinin parçası sayıyor.
DORA, Trunk-based developmentKarşı görüş
Şema geçişi ya da kırıcı API değişikliği gibi işler doğası gereği büyük; küçük PR'lara bölününce ara durumlar ve flag debt doğar. Mimari bazen gerçekten yanlış seçilmiştir; o durumda karara sadık kalmak maliyeti büyütür.
Kavramlar
Pratikte
- Büyük AI çıktısını baştan dilimle; her dilimi kendi testiyle stacked PR olarak aç.
- Yarım özelliği feature flag arkasında ana dala al; her bayrağa sahip ve son tarih yaz.
- Geri alması pahalı kararları ADR'ye yaz; mimariyi yeniden yazım dalı yerine strangler fig ile değiştir.
Burada tersine dönmüş bir ilişki var: PR'lar olması gerekenden uzun yaşıyor, mimariler ise olması gerekenden kısa. Uzun ömürlü dallar merge çatışması, bağlam kaybı ve inceleme yorgunluğu üretirken, her çeyrekte değişen mimari kararlar ekipte kalıcı bilgi birikmesini engelliyor. 2026 verisi PR tarafındaki baskının arttığını gösteriyor: Harvard'daki firma düzeyi bir çalışmada coding agent'lar PR sayısını yüzde 23 artırırken PR'ın birleşmesine kadar geçen süreyi yüzde 49 uzattı; Faros AI'ın 2026 raporunda incelemede geçen medyan süre yüzde 441,5 uzadı. Buna karşılık araçlar da değişti: GitHub Ekim 2026'da stacked pull requests özelliğini tüm github.com planlarında genel kullanıma açtı. Konu, değişiklik boyutu, dal stratejisi ve mimari karar kaydı pratiklerini birlikte ele almayı gerektiriyor.
Çıkarımlar
- PR yaşını izleyin: 72 saati geçen PR'lar görünür olsun; DORA eşiği bir günlük dal ömrü, 2026 verisinde ise agent benimseyen firmalarda birleşme süresi yüzde 49 uzadı.
- Yaklaşık 100 satır makul, 1.000 satır çoğu zaman fazla; AI'dan istenen işi baştan dilimleyin, büyük değişikliği stacked PR olarak açın.
- Feature flag birleştirmeyi yayından ayırır, ama her bayrağın sahibi ve son kullanma tarihi olmalı.
- Mimariyi ölçülmüş bir acı için değiştirin; kararları ADR ile kaydedin ve kuralı mümkünse linter ya da testle de denetleyin.
- Büyük yeniden yazım dalı yerine strangler fig ile parça parça geçiş yapın.
Alt başlıklar
Ekim 2026 itibarıyla durum
Son 12 ayda iki şey birlikte değişti: PR hacmi arttı ve onu yönetecek araçlar olgunlaştı. Harvard'dan Chen ve Stratton'ın 700'ü aşkın firmanın Jellyfish verisine dayanan Ağustos 2026 tarihli çalışmasına göre coding agent'lar PR sayısını yüzde 23, eklenen satırı yüzde 30 artırdı; çözülen Jira issue sayısında anlamlı bir değişim yok, PR'ın birleşmesine kadar geçen süre ise yüzde 49 uzadı. Faros AI'ın Nisan 2026 raporu da incelemede geçen medyan sürenin yüzde 441,5, PR boyutunun yüzde 51 arttığını gösterdi.
Araç tarafında Cursor, Aralık 2025'te stacked diffs ve AI review aracı Graphite'ı satın aldı. GitHub, Temmuz 2026'da public preview olarak açtığı stacked pull requests özelliğini 6 Ekim 2026'da genel kullanıma açtı: merge queue desteği, değişmeyen koda verilen onayları koruyan “Rebase stack” ve gh stack CLI eklentisi geldi. Thoughtworks Technology Radar'ın Nisan 2026 sayısı da coding agent'ları linter, test ve tip denetleyicisi gibi geri bildirim kontrolleriyle sınırlamayı öne çıkardı.
PR yaşı neden bir risk metriği
Bir PR açık kaldığı her gün ana dal ondan uzaklaşır. Üç gün içinde birleştirilen bir değişiklikte çatışma genellikle birkaç satırdır; üç hafta açık kalan bir dalda ise başka ekiplerin yaptığı refactor'lar, yeniden adlandırmalar ve şema değişiklikleri birikir. Çatışma çözümü sırasında yapılan hatalar en zor bulunan hatalardır, çünkü ne yazarın ne de incelemecinin dikkat ettiği yerlerde ortaya çıkar.
DORA'nın trunk-based development tanımı burada pratik bir eşik veriyor: dalların ömrü bir günü geçmemeli, ana dala günde en az bir kez entegrasyon yapılmalı ve aynı anda açık dal sayısı üç civarında kalmalı. Her ekip bu eşiğe hemen ulaşamaz, ama PR yaşını görünür kılmak ilk adım. 2026'da bu eşik daha da uzaklaştı: Chen ve Stratton'ın Harvard çalışmasında coding agent benimseyen firmalarda PR'ın birleşmesine kadar geçen süre ortalama 7 günden yaklaşık 10,5 güne çıktı. Basit bir uygulama: 72 saati geçen her PR'ı ekip kanalına otomatik düşürmek ve haftalık toplantıda yalnızca bu listeyi konuşmak.
Büyük PR, yüzeysel inceleme
İnceleme kalitesi PR boyutuyla ters orantılı. Google'ın mühendislik pratikleri rehberi yaklaşık 100 satırlık bir değişikliği makul, 1.000 satırlık bir değişikliği genellikle fazla büyük kabul ediyor. Pratikte gözlenen davranış da bunu doğruluyor: 50 satırlık PR'a on yorum gelirken 1.500 satırlık PR'a “LGTM” geliyor, çünkü inceleyen kişi tamamını zihninde tutamıyor.
AI destekli üretim bu sorunu büyütüyor. Faros AI'ın 2026 verisinde yüksek AI benimsemesinde PR boyutu yüzde 51 büyüdü ve hiç incelenmeden birleşen PR'lar yüzde 31,3 arttı; rapor bunu incelemecilerin hacmin gerisinde kalmasına bağlıyor. Çözüm, işi ajana verirken baştan dilimlemek: önce veri modeli ve migration, sonra servis katmanı, sonra API, en son arayüz. Her dilim ayrı PR, her PR kendi testiyle. Faros'a göre PR'ların yaklaşık dörtte biri artık bir AI agent tarafından da inceleniyor; bu iyi bir ilk filtre, ama sorumluluğu devretmez. Anti-pattern: “nasılsa AI yazdı, testler geçiyor” diyerek büyük PR'ı tek onayla birleştirmek; geçen testler incelemenin yerini tutmaz.
Feature flag ile birleştirmeyi yayından ayırmak
PR'ların uzun yaşamasının en yaygın nedeni, özelliğin “henüz bitmediği” için ana dala alınamaması. Feature flag (özellik bayrağı) bu bağı koparıyor: yarım kalan kod ana dala girer ama bayrak kapalı olduğu için kullanıcıya görünmez. Böylece birleştirme teknik bir olay, yayın ise ürün kararı haline gelir.
Next.js tarafında bu, sunucu bileşeninde bir bayrak kontrolüyle yeni rotayı ya da bileşeni koşullu göstermek kadar basit olabilir; mobilde ise uzaktan yapılandırma ile ekran bazında açıp kapatmak. Dikkat edilmesi gereken bedel bayrak borcu: her bayrak bir kod dalı ve test kombinasyonu ekler. Pratik kural, her bayrağa açılış anında bir sahibi ve bir son kullanma tarihi yazmak; 60 günü geçen bayrakları listeleyip ya kalıcı yapmak ya da silmek.
Kısa yaşayan mimariler: yeniden yazma cazibesi
Sorunun ikinci yarısı ters yönde bir hastalığa işaret ediyor. Bazı ekiplerde mimari kararlar PR'lardan daha kısa ömürlü: bir çeyrekte mikroservis, sonraki çeyrekte modüler monolit, ardından yeni bir state yönetimi kütüphanesi. Her geçişte önceki yapı yarım kalıyor ve kod tabanında aynı problemi üç farklı şekilde çözen katmanlar birikiyor.
AI bu cazibeyi artırıyor, çünkü bir modülü yeni desene taşımak artık birkaç saatlik ajan işi gibi görünüyor. Oysa mimarinin asıl maliyeti kodda değil, ekibin zihinsel modelinde, operasyon bilgisinde ve izleme dashboard'larında. Bir mimarinin değerini görmek için genellikle en az iki üç release döngüsü boyunca onunla yaşamak gerekiyor. Sağlıklı bir soru: bu değişiklik ölçülmüş bir acıyı mı çözüyor, yoksa yeni bir şeyin heyecanını mı? Değişiklik önerisine bir ölçüm eklemek (gecikme, hata oranı, geliştirme süresi) tartışmayı zevk meselesinden çıkarır.
Kararı kayda geçirmek: ADR
Mimari kararların kısa ömürlü olmasının bir nedeni, neden alındıklarının unutulması. Altı ay sonra ekibe katılan biri bir tercihi gereksiz bulup değiştiriyor, oysa o tercih yaşanmış bir olayın sonucuydu. Architecture Decision Record (ADR, mimari karar kaydı) bu hafızayı depoya taşıyor: bağlam, değerlendirilen seçenekler, karar ve sonuçları bir sayfalık markdown dosyasında.
ADR'nin AI çağında ek bir faydası var: coding agent'lar depodaki dokümanları okuyabildiği için, docs/adr klasöründeki kararlar ajanın da bağlamına girebiliyor. Bunu ajanın kendiliğinden yapacağını varsaymamak gerekiyor: ETH Zürih'in 2026'daki AGENTS.md çalışması, depo düzeyindeki bağlam dosyalarının görev başarısını genel olarak artırmadığını ve çıkarım maliyetini ortalama yüzde 20'den fazla yükselttiğini gösterdi. Kısa bir talimat dosyasından ilgili ADR'ye bağlantı vermek ve kuralı mümkünse bir linter ya da testle de denetlemek daha güvenilir. “Tüm veri erişimi repository katmanından geçer, ADR-007” gibi bir kural hem insan hem ajan için bağlayıcı hale geliyor. Bir kararı değiştirmek serbest, ama eski ADR'yi silmek yerine “yerini ADR-014 aldı” diye işaretlemek gerekiyor. Böylece mimari değişir ama gerekçe zinciri kopmaz. Şablon için Michael Nygard'ın önerdiği sade yapı yeterli; numaralandırılmış dosya adları kronolojiyi kendiliğinden korur.
Strangler fig: mimariyi büyük patlama olmadan değiştirmek
Mimariyi gerçekten değiştirmek gerektiğinde uzun ömürlü bir “yeniden yazım” dalı açmak en riskli yol. Bu, yukarıdaki iki sorunu birleştirir: aylarca yaşayan bir PR ve yarım kalma ihtimali yüksek bir mimari. Martin Fowler'ın strangler fig (boğan incir) adını verdiği desen alternatif sunuyor: yeni yapı eski sistemin yanında büyür, trafik parça parça yeniye yönlendirilir, eski parçalar boşaldıkça silinir.
Somut senaryo: bir REST monolitindeki sipariş modülünü ayrı servise taşımak. Önce bir yönlendirme katmanı eklenir, yeni servis yalnızca okuma uçlarıyla canlıya çıkar, gölge trafikle sonuçlar eski sistemle karşılaştırılır, ardından yazma uçları taşınır. Her adım küçük bir PR, her adım geri alınabilir. Başarı ölçütü takvim değil, eski koddan silinen satır sayısı. Geçişin her aşamasında eski ve yeni yolun hata oranlarını aynı dashboard'da görmek, geri dönüş kararını tartışmasız hale getirir.
Son gelişmeler
Ekim 2026 itibarıyla
Önce kendi cevabını düşün, sonra aç.
Her gün ana dala birleştirmek, yarım özelliklerin canlıya sızması demek değil mi?
Feature flag kullanıldığında hayır. Kod ana dalda olur ama bayrak kapalı olduğu için kullanıcıya görünmez. Asıl risk, uzun dalda biriken ve birleştirme anında patlayan çatışmalardır.
AI incelemeyi de yapabiliyorsa büyük PR'lar neden sorun olsun?
AI review stil ve bariz hataları yakalamakta işe yarıyor ve 2026'da yaygınlaştı; Faros verisinde PR'ların yaklaşık dörtte biri bir AI agent tarafından da inceleniyor. Ama iş kuralının doğru anlaşılıp anlaşılmadığını ve mimari uyumu sorumluluk alan bir insanın onaylaması gerekiyor. Aynı veride incelenmeden birleşen PR'lar yüzde 31,3 arttı. AI review'u ilk filtre olarak kullanıp PR'ları yine küçük tutmak daha güvenli.
Mimariyi sık değiştirmek çeviklik değil mi?
Kodu sık değiştirmek çeviklik; temel yapısal kararları her çeyrek değiştirmek ise genellikle karar alma sürecindeki bir eksikliğin belirtisi. Bir mimarinin işe yarayıp yaramadığını görmek için birkaç release döngüsü gerekir. Değişikliği bir ölçüme bağlayabiliyorsanız değiştirin.
Stacked PR'lar inceleme yükünü artırmaz mı?
Toplam satır aynı kalır, ama her parça tek başına anlaşılır hale gelir ve paralel incelenebilir. Bir yığındaki alt PR birleşirken üsttekiler otomatik rebase edilir. GitHub Ekim 2026'dan beri bunu yerleşik olarak destekliyor; merge queue ile bütün yığın tek grup olarak birleşebiliyor ve değişmeyen koda verilen onaylar rebase sonrası korunuyor.
Küçük bir ekipte ADR yazmak bürokrasi olmaz mı?
Her karar için değil, geri alması pahalı olan kararlar için yazılır: veritabanı seçimi, kimlik doğrulama modeli, modül sınırları. Yarım sayfa yeterli. Bir yıl sonra “bunu neden böyle yaptık” sorusuna harcanan saatler bürokrasiden çok daha pahalı.
Notun kaynakları
- Trunk-based development (DORA)
- Small CLs, Google Engineering Practices
- StranglerFigApplication (Martin Fowler)
- Documenting Architecture Decisions (Michael Nygard)
- Artificial Intelligence in the Firm: Bottlenecks in Software Production (Chen ve Stratton, Harvard)
- AI Impact on Engineering Productivity: 2026 Report Data (Faros AI)
- The AI Engineering Report 2026: Ten Takeaways (Faros AI)
- Stacked pull requests generally available (GitHub Changelog, 6 Ekim 2026)
- Evaluating AGENTS.md: Are Repository-Level Context Files Helpful for Coding Agents? (arXiv 2602.11988)
Sunum stili
12 slayt. Tıklarsan sunum o slayttan başlar.
Slayt notları
Açılış sorusu: en eski açık Pull Request'iniz kaç günlük? En son mimari değişikliğiniz kaç ay önceydi?
Ters dönmüş iki ömrü tanıt. Anlatımın geri kalanı bu iki belirtinin ortak kökü üzerine.
Çatışma çözümünde yapılan hata, kimsenin hata aramadığı yerde çıkar. DORA eşiği: dal ömrü bir günü geçmesin. Harvard 2026: coding agent sonrası birleşme süresi 7 günden yaklaşık 10,5 güne çıktı.
Google'ın rehberi 100 satırı makul, 1.000 satırı genelde fazla sayıyor. Faros 2026: yüksek AI benimsemesinde Pull Request boyutu +%51, incelemede medyan süre +%441,5.
Her dilim ayrı Pull Request, her biri kendi testiyle. Şema değişikliğinde expand/contract adımları da ayrı Pull Request olur.
Feature Flag birleştirmeyi yayından ayırır. GitHub Ekim 2026'dan beri stacked Pull Request'i yerleşik destekliyor; yığın merge queue'ya tek grup olarak girer. Her bayrağa sahip ve son kullanma tarihi yaz, 60 günü geçeni sil.
Bir modülü taşımak birkaç saatlik Agent işi gibi görünüyor. Ama mimarinin asıl maliyeti ekibin zihinsel modelinde, operasyon bilgisinde ve dashboard'larda.
Sağlıklı soru: bu değişiklik ölçülmüş bir acıyı mı çözüyor, yoksa yeni bir şeyin heyecanını mı? Öneriye gecikme, hata oranı ya da geliştirme süresi ekle.
docs/adr klasöründeki kararlar Agent'ın context'ine girebilir, ama kendiliğinden okunacağını varsayma: ETH Zürih 2026 bağlam dosyalarının tek başına başarıyı artırmadığını gösterdi. Talimattan ADR'ye bağlantı ver, kuralı linter ile denetle.
Uzun bir yeniden yazım dalı iki sorunu birden birleştirir. Her adım küçük bir Pull Request, eski ve yeni yolun hata oranı aynı dashboard'da.
Anti-pattern: AI yazdı, testler yeşil, tek onayla merge. Faros 2026'da incelenmeden birleşen Pull Request +%31,3. AI review'u ilk filtre olarak kullan, Pull Request'i yine küçük tut.
ADR geçişin pusulası, küçük Pull Request geri dönüşün sigortası. Teşekkür et.