Zaten Var Olan Teori
Her MOAD kusurunun 2026’daki sistematik tespitinden onlarca yıl önce bilinen bir çözümü vardı. Kusurlar, kimsenin daha iyisini bilmemesinden dolayı devam etmedi. Bilmek ile tespit etmek aynı şey olmadığı için devam ettiler.
MOAD-0001: O(N²) list.contains
Donald Knuth, 1973. The Art of Computer Programming, Volume 3: Sorting and Searching. Hash tabloları O(1) arama için 1973’te tam olarak belirtilmiş ve analiz edilmiştir. O(N) doğrusal arama ile O(1) hash araması arasındaki fark — belgelenmiş, resmileştirilmiş ve geniş çapta atıf yapılmıştır. Java, HashSet’i 1.0’da (1996) yayınladı. Python, set’i birinci sınıf tür olarak 2.4’te (2004) yayınladı. Çözüm, her ekosistemde varsayılan bir deyim haline gelmeden 30 yıl önce mevcuttu.
Richard Hamming, 1986. Bell Labs dersleri (daha sonra The Art of Doing Science and Engineering, 1997 olarak yayınlandı). Hamming algoritmik karmaşıklığı, doğru ile verimli arasındaki farkı ve küçük ölçekte çalışan ancak büyük ölçekte çöken sistemler kurmanın tehlikesini açıkça öğretti. Bunu “bugün gördüğünüz sorun için değil, yarın karşılaşacağınız sorun için tasarım yapmak” olarak adlandırdı.
MOAD-0002: Paylaşılan Global Durum Bağlantısı
David Parnas, 1972. “On the Criteria To Be Used in Decomposing Systems into Modules.” CACM, Aralık 1972. Parnas, modüllerin bilgi gizleme yoluyla ayrıştırılması gerektiğini savundu — her modül kendi durumuna sahip olmalı, paylaşılabilir değiştirilebilir global değişkenler olmamalıdır. Bu, Intertangle çözümünün doğrudan teorik öncülüdür. Parnas açıkça belirtti: global paylaşılan durum, testlerle ortaya çıkmayan görünmez bir bağlantı yaratır.
MOAD-0003: ThreadLocal Kimlik Sızıntısı
Java 1.2, 1998. ThreadLocal, Java standart kütüphane sınıfı olarak yayınlandı. Thread pooling ile ThreadLocal bir arada var olduğunda sızıntı mekanizması ortaya çıktı. Hata yapısaldır: taşıyıcının ömrü iş birimi değil, thread’dir. Java EE yaşam döngüsünün başından itibaren dokümantasyonda bu konuda uyarılar yer alıyordu.
MOAD-0004: Günlüğe Kaydedilen Kimlik Bilgileri
RFC 1945, 1996. HTTP/1.0 Authorization başlığını tanımladı. Kimlik bilgilerinin günlüğe kaydedilmesi hatası, Authorization başlığı var olduğu günden itibaren mümkün hale geldi. OWASP 2001’de kuruldu ve ilk kılavuzlarında kimlik bilgisi günlüğü tutmayı bir güvenlik açığı sınıfı olarak belgeledi. Desen: Authorization başlığı → log middleware → diskte düz metin kimlik bilgileri. İlk HTTP auth spesifikasyonundan beri bilinebilir.
MOAD-0005: Thundering Herd / Önbellek Damgası
Unix çekirdeği, 1993. 'Thundering herd problem' — paylaşılan bir olayda N sürecin aynı anda uyanması — Unix çekirdek geliştirme tartışmalarında 1990'ların başında ortaya çıktı. Doug Schmidt'in Reactor pattern (1994) ve Half-Sync/Half-Async (1995) üzerine çalışmaları senkronizasyonu altyapı seviyesinde ele aldı. Cache stampede varyantı (önbellek kaçırma durumunda N iş parçacığının aynı değeri hesaplaması) dağıtık sistemler literatüründe 2001 yılına kadar belgelenmişti.
---
Teori: tamamlandı. Tespit araçları: yok. 'Bilinebilir' ile 'tespit edilmiş' arasındaki boşluk, hataya bağlı olarak 28 ila 54 yıl arasında değişiyor.
Bilinebilirlik Boşluğu
Zaman çizelgesi, her MOAD hatasının sistematik tespit edilmeden en az 28 yıl önce bilinen bir çözüme sahip olduğunu gösteriyor. En kısa boşluk (MOAD-0003) 28 yıl. En uzun boşluk (MOAD-0002) 54 yıl.
Bu, cehalet hakkında bir hikâye değil. Knuth, Parnas, Hamming — bunlar bilgisayar biliminin en çok atıf alan yazarlarıdır. Çalışmaları üniversitelerde okutuldu. Kelime dağarcıkları (Big O, information hiding, algoritmik karmaşıklık) standart müfredat haline geldi.
Kod Neden İyileşmez: Beş Koşul
Bir kusur tesadüfen kalıcı hale gelmez. Aynı anda mevcut olan beş yapısal koşul, bir iyileşme ortamı yaratır. Bunlardan herhangi biri kaldırılırsa tespit mümkün hale gelir.
Koşul 1: Doğru Çıktı
Bir liste ve bir küme, üyelik sorusuna aynı şekilde cevap verir. list.contains(x) ve set.contains(x) aynı boolean değeri döndürür. Bir ThreadLocal, eski bir kimliği hâlâ taşır — bu sadece bir kimliktir ve yanlış isteğe aittir. Günlüğe kaydedilen kimlik bilgileri doğru şekilde kaydedilir — kimlik bilgisi hata olmadan günlük dosyasına ulaşır. Kusur bir arıza değildir. Kusur yalnızca maliyet veya güvenlik sonucu açısından bir arızadır. Çıktıyı kontrol eden testler geçer. Maliyet veya güvenlik sonucunu kontrol eden testler: çoğunlukla yazılmamıştır.
Koşul 2: CI'da Karmaşıklık Testi Yok
Dijkstra, “testler kusurların varlığını gösterir, yokluğunu değil” demiştir. Hamming bunu şöyle genişletmiştir: test ettiğimiz kusurlar, bulduğumuz kusurlardır. 2026’daki CI pipeline’ları şunu test eder: doğruluk, tür güvenliği, API sözleşmeleri, işlevsel davranış. Bunları test etmez: işlem başına algoritmik karmaşıklık, çağrı başına bellek artışı, yetkilendirme başlığı temizleme, iş parçacığı kimliği yaşam döngüsü.
Hiçbir test çalıştırılmaz. Hiçbir test başarısız olmaz. Pipeline yeşildir. Kusur görünmez.
Koşul 3: Küçük-N Kökeni
Kod geliştirme ortamlarında yazılır ve incelenir. Geliştirme grafikleri 50 düğüm içerir. Geliştirme istek yükleri 10 eşzamanlı iş parçacığına sahiptir. Geliştirme önbellek isabet oranı düşüktür (sıcak önbellek, az anahtar). N=50’de O(N²) maliyeti 2.500 işlemdir. Görünmez. N=50.000’de maliyet 2.500.000.000 işlemdir. 1 saniyelik derleme yerine 17 dakikalık derleme.
Kodu yazan yazar N=50.000’i hiç görmemiştir. Onu onaylayan inceleyici N=50.000’i hiç görmemiştir. Kusur, yazıldığı ölçekte görünür değildi.
Koşul 4: Bağlam Olmadan Kopyalama Yayılır
Doğru bir algoritma öğreticidir. Eğitimler doğru örneklerle öğretir. Dokümantasyon çalışan kodu gösterir. Aynı Tarjan SCC iskeleti — visited = [], içteki if n not in visited — GHC, Maven, Python pip, Cargo, TypeScript derleyicisi, Kotlin derleyicisi, Scala derleyicisi ve javac içinde görünür. Farklı ekipler, farklı diller, farklı onyıllar. Aynı fosil. Orijinal yazarın N=50 değeri kodla birlikte yayılmaz. Yayılan şey: doğru çıktı. Geride kalan: performans varsayımı.
Koşul 5: Ölçek Donmuş Kodun Etrafında Büyür
Kod bozulmaz. Altyapı ölçeklenir. 2003 yılında 200 paket için yazılmış bir bağımlılık çözücüsü, 2024 yılında 50.000 paket üzerinde çalışır. Kimse onu yeniden yazmaz — çalışır. Kimse profilini çıkarmaz — CI yeşildir. O(N²) maliyeti felakete dönüştüren N, yavaş yavaş, görünmez biçimde üretim ölçeğinde ortaya çıkar. O zamana kadar orijinal yazar çoktan gitmiştir. Kod bir bağımlılıktır. Kimse çalışan bağımlılıklara dokunmaz.
Teşhis: Beş Koşul
Beş koşul: doğru çıktı, karmaşıklık testlerinin olmaması, küçük-N kökeni, bağlam olmadan kopyalama, donmuş kodun etrafında ölçek büyümesi.
Beş koşulun tümü her MOAD için mevcuttu. Bu tesadüf değildir — tortul bir hata sınıfının yapısal imzasıdır.
Hamming'in Söyledikleri
Richard Hamming'in 1986'da Bell Labs'te verdiği dersler — 1997'de The Art of Doing Science and Engineering olarak yayımlandı — MOAD kusur modelini doğrudan tanımlayan uyarılar içerir. Hamming MOAD'den bahsetmiyordu. Mühendislik sistemlerinin, yerel olarak doğru kararların küresel olarak pahalı hale gelmesi etrafında katılaşma eğilimini tanımlıyordu.
Hamming karmaşıklık hakkında: 'Hesaplamanın amacı içgörüdür, sayılar değil. Ancak algoritmanın doğru karmaşıklıkta olması gerekir, yoksa sayılar hiçbir zaman elde edilemez. N=100 üzerinde çalışan bir O(N²) algoritması, emekli olmadan önce N=1.000.000 üzerinde çalışmaz.'
Hamming kopyalama hakkında: 'Büyük mühendisler çözümleri sadece kopyalamaz. Çözümün neden çalıştığını, hangi koşullar altında geçerli olduğunu ve neyin bozacağını anlarlar. Koşulları olmadan kopyalanan bir çözüm bir zaman bombasıdır.'
Hamming test etme hakkında: 'Ölçtüğünüz şeyi test etmek, önemli olanı ölçmekle aynı şey değildir. Test etmek için seçtiğimiz özellikler için ayrıntılı test paketleri oluştururuz. Seçmediğimiz özellikleri test etmeden bırakırız. Test etmediğimiz özellikler, üretimde bizi şaşırtan şeylerdir.'
Hamming ölçekte: 'Bir projenin ilk yılında yaptığın hata, onuncu yılında hâlâ düzelttiğin hatadır. Erken varsayımlar katılaşır. Proje onların etrafında ölçeklenir. Kimse temeli yeniden yazmaz.'
Uyarı ile Operasyonelleştirme Arasındaki Boşluk
Hamming'in uyarıları doğruydu. Öğretildi. Alıntılandı. Müfredatlarda yer aldı. Ancak bir uyarı bir dedektör değildir. Hamming kusurun şeklini tarif etti. CI'da çalışıp O(N²) sıcak yolları, ThreadLocal kimlik sızıntılarını veya kimlik bilgisi günlüğünü işaretleyen bir araç inşa etmedi. 'Bilinebilir' ile 'tespit edilebilir' arasındaki boşluk, bir teori ile onun otomatik altyapı olarak operasyonelleştirilmesi arasındaki boşluktur.
MOAD, alanın doğruluk altyapısını aynı düzeyde performans veya güvenlik altyapısı olarak inşa etmediği için var. Birim testleri: 1970'lerden beri standart. Özellik tabanlı testler: 1990'lardan beri standart. CI'da algoritmik karmaşıklık kıyaslamaları: 2026'da hâlâ deneysel.
Uyarıyı Operasyonelleştirmek
Hamming karmaşıklık katılaşması, test edilmemiş özellikler, çözümlerin koşullarını olmadan kopyalanması ve ölçeğin erken varsayımları ezmesi konusunda uyardı. Bize kelime dağarcığını verdi. Dedektörü vermedi.
MOAD pipeline bu boşluğu doldurur: tarama → bilet → yama → birim testi → ifşa → PR → upstream birleştirme. Bu operasyonelleştirilmiş Hamming'dir: yalnızca uyarı değil, otomatik tespit ve düzeltme pipeline'ı.
Fester İmzası
Bir MOAD-sınıfı kusurun tanınabilir bir imzası vardır. Beş koşulun tümü aynı anda mevcuttur. Beşinin tümü, tek bir tarama yazılmadan önce kontrol edilebilir:
1. Doğru çıktı mı? Standart test paketini çalıştırın. Geçerse, kusur bir performans veya güvenlik özelliğidir, doğrulukla ilgili değildir. Bu, standart CI'nin bunu yakalayamayacağı anlamına gelir.
2. Karmaşıklık testi yok mu? CI yapılandırmasını kontrol edin. Bir benchmark aşaması var mı? Algoritmik davranışı (sadece duvar süresi değil) önceki bir commit ile karşılaştırıyor mu? Yoksa: koşul mevcut.
3. Küçük-N kökeni mi? Git blame ve orijinal commit’i kontrol edin. İlk uygulamadaki veri kümesi boyutu neydi? Bu boyut, mevcut üretim yükünden 100 kat daha mı küçük? Evet ise: koşul mevcut.
4. Kopya yayılıyor mu? Deseni kod tabanı ve ekosistemler arasında arayın. Aynı yapısal desen, ortak kökeni olmayan N≥3 bağımsız kod tabanında görülüyor mu? Evet ise: fosil yayılmış demektir. Her kopya: yeni bir iltihaplanma noktası.
5. Ölçek büyüyor mu? Üretim metriklerini kontrol edin. Bugün N değeri ilk dağıtımdaki N değerine göre nedir? Büyüme oranı sürdürülebilir mi? Hangi N’de kusur operasyonel olarak kritik hale gelir?
Beş koşulun tamamı kontrol edilip doğrulandıysa: MOAD sınıfı bir kusurunuz var demektir. Düzeltme her zaman tek satırlık veya tek metotluk bir değiştirmedir. Zor olan keşiftir. Kolay olan düzeltmedir.
Hamming’in kastettiği buydu: mühendislik düzeltme ile ilgili değildir. Düzeltme, görüldüğünde basittir. Mühendislik, onu görmenizi sağlayacak sistemleri kurmakla ilgilidir.
İmzayı Uygula
MOAD iltihap imzası: doğru çıktı + karmaşıklık testi yok + küçük-N kökeni + kopya yayılıyor + ölçek büyüyor.
Bu imza yalnızca beş MOAD kusuruyla sınırlı değildir. Doğruluk testlerinin tek otomatik kalite geçidi olduğu herhangi bir sistemde varlığını sürdüren bir kusur sınıfını tanımlar.