Yazılım Notları

Spec, Domain ve Disposable Code

Spec-Driven Development: Milyarlarca Sterlinlik Ödeme Trafiğinden Dersler

Spec-Driven Development: Lessons from £Billions in Payments

Ödemede hata sadece bug değil, kayıp paradır; bu yüzden önce davranışı yazılı sözleşmeye dökmek, sonra kodu ve AI Agent'larını o sözleşmeye bağlamak gerekir. 2026'da Agent'ların kendisi ödeme başlatmaya başladığı için Spec'in kapsamı da genişledi.

Yükselen görüş

Ödemede belirsiz Spec kayıp paradır; durum makinesi, idempotency, para temsili ve kayıt kuralları koddan önce yazılmalı, kod ve Agent'lar bu sözleşmeye bağlanmalı.

Idempotency ve çift taraflı kayıt ödemede yerleşik pratik; SDD araçları ise yaygınlaşırken küçük işler için fazla ağır olmakla eleştiriliyor.

Zihinsel model

Spec bir binanın statik projesidir: duvarı Agent örebilir, ama taşıyıcı kolonların yeri ve yükü önceden çizilmiş olmalı.

Neden

  • Ağ zaman aşımında ödeme bankada gerçekleşmiş olabilir; Spec bu 'bilinmiyor' durumunu yazmazsa Agent onu başarısız sayar.
  • Agent, Spec'in boş bıraktığı yuvarlama, tekrar deneme ve geçiş kurallarını makul ama yanlış varsayımlarla doldurur.
  • Spec'teki invariant'lar property-based test ve mutabakata dönüşür; yazılmayan kural ne test edilebilir ne denetlenebilir.

Kanıt

Stripe, aynı idempotency anahtarıyla farklı parametre gönderilen isteği reddederek yanlış işlem eşleşmesini önlüyor.

Stripe API Reference: Idempotent requests

SWIFT'e göre sınır ötesi ödeme talimatlarının yüzde 98'inden fazlası artık katı alan kuralları olan ISO mesaj standardıyla gönderiliyor.

East & Partners, 2025

Agent ödeme protokolü, kullanıcının Agent'a hangi ödeme aracı ve limitle yetki verdiğini imzalı mandate kaydıyla kanıtlıyor.

Google Cloud, AP2 duyurusu, 2025

Karşı görüş

SDD araçları küçük işler için ağırdır, çok sayıda markdown üretir ve Agent'lar Spec'i her zaman izlemez. Spec kodla birlikte PR ile güncellenmezse kodla ayrışır ve sonraki her Agent'ı yanıltır.

Kavramlar

IdempotencyAynı isteği tekrar çalıştırmanın tek seferle aynı sonucu vermesi.
State machineÖdemenin alabileceği durumları ve aralarındaki izinli geçişleri tanımlayan model.
Double-entry bookkeepingHer para hareketinin borç ve alacak olarak yazılıp toplamın sıfırlanması.
ReconciliationKendi kayıtlarını banka ya da sağlayıcı raporlarıyla karşılaştırıp farkları çözmek.
Payment MandateKullanıcının Agent'a belirli araç ve limitle ödeme yetkisi verdiğini gösteren imzalı kayıt.

Pratikte

  • Ödemeyi izinli geçişleri ve 'bilinmiyor' durumu olan bir durum makinesi tablosuyla tanımla.
  • Parayı en küçük birimde tamsayı ya da decimal olarak, para birimi koduyla birlikte tut.
  • Spec'teki her kurala kimlik ver, testlerde ona atıf yap; Spec'e dokunmayan ödeme PR'larını işaretle.
Önce bunu okuDesigning robust and predictable APIs with idempotency (Stripe)Ağ hatasında sonucun neden bilinemediğini ve sözleşmenin bunu nasıl çözdüğünü anlatıyor.