Uyumluluk: Pactmark 0.2.x. Mevcut genel yazım cephesi
kind: "read" işlemlerini sunar.
Yazma-etkisi yazımı, karar challenge’ları ve mutabakat komutları çalışma-zamanı yüzeyinde vardır ve
genel cepheye taşınmaktadır — bkz. Sınırlar.Araç, bir beyan ve bir fonksiyondur
Şekil 1. Soldaki her şey aracın kayıt özetine katkı verir. Bir aracın eski bir grantı korurken sessizce daha tehlikeli hâle gelememesinin nedeni budur.id’si namespace.name@version biçimiyle kısıtlıdır ve implementationVersion bilinçli olarak
ayrıdır: sözleşme sürümü tüketicilere ne bekleyeceklerini söyler, uygulama sürümü sözleşme aynı kalsa
bile bir davranış değişikliğini görünür kılar.
Yürütme bağlamının verdikleri
SafeRunContext
tenantId, runId, stepId, purposeCode, dataClass — doğru karar vermeye yetecek kadar ve
kasıtlı olarak bir insanı tanımlamaya yetmeyecek kadar.EgressHttpClient
Bir aracın kullanması gereken tek ağ istemcisi. Beyan edilmiş izin listesini, yönlendirme
politikasını, TLS doğrulamasını ve bayt/süre sınırlarını uygular.
ArtifactWriter
Bayt yazar ve
{ artifactId, contentDigest } döndürür. İçerik adresleme sonradan değil burada olur.AbortSignal
İptal ve son tarih yayılımı. Bunu yok sayan bir araç yine de
timeoutMs ile sınırlanır, ama önce
bütçeyi harcar.Etkiler: ilginç olan yarı
Bir okuma gözlemler. Bir etki koşunun dışında bir şeyi değiştirir — ve bir kez gerçekleşmiş olabilir hâle geldiğinde seçenekleriniz kalıcı olarak daralır. Şekil 2. Strateji, başarısızlık anında seçilmez; araca kayıtlıdır. Bu sıralama güvenlik özelliğinin ta kendisidir: yeniden denemenin güvenli olduğuna, zaten öyle olmasını istedikten sonra karar veremezsiniz.”Zaman aşımında yeniden dene” neden bir hatadır
Zaman aşımı size yanıtın gelmediğini söyler. İsteğin işlenip işlenmediği hakkında hiçbir şey söylemez. Zaman aşımında yeniden deneyen sistemler yalnızca her hedef idempotentse doğrudur — ki bu bir olgu değil, bir varsayımdır. Pactmark varsayımı baştan söylemenizi ister:native
Hedefin bu tam etki anahtarı için idempotent olduğunu iddia ediyorsunuz. Tekrarlamak güvenlidir.
transactional
Etki yerel durumla birlikte commit olur; geri alma onu da kaldırır.
reconcilable
Tekrarlayamazsınız ama sonradan sorgulayıp ne olduğunu öğrenebilirsiniz.
none
Güvenli bir tekrar yoktur. Etki park edilir ve yetkilendirilmiş bir insan kararını bekler.
Etki defteri
Pactmark her dış sınırın çevresine hazırlık, onay ve mutabakat durumu yazar.EffectPrepared bir
effectKey ve kayıtlı strategy taşır; EffectDispatched bir deneme numarası taşır;
EffectAcknowledged onay makbuzunu ve bir sonuç özetini taşır.
Sonuç bilinmediğinde EffectUncertain ve ardından EffectNeedsReconciliation kaydedilir — ve şema
effectMayHaveOccurred: true değerini zorunlu kılar. Belirsizliği güvenliği ima ederek kaydedemezsiniz.
Çözümün tam olarak iki biçimi vardır:
abandon_uncertain, ona bağımlı olan her şey için KAF_EFFECT_ABANDONED_UNCERTAIN üretir. Bu
sürtünme kasıtlıdır.
Telafi, yeni ve yetkilendirilmiş bir koşudur
Telafi bir “geri al” değildir.CompensationRequested, kendi yetkisi, kendi WorkOrder’ı ve kendi
kanıtı olan ayrı bir telafi koşusu başlatır. Başka birini tersine çeviren bir iş eylemidir ve öyle
yetkilendirilir.
Araç tanımlama
Egress, kapsamlar ve testlerle pratik bir anlatım.
Olay kurtarma
Bir şey ters gittiğinde kontrol altına alma, sınıflandırma ve mutabakat.