Uyumluluk: Pactmark 0.2.x.

Durumlar

Şekil 1. Mutlu yol düz bir çizgidir. İlginç olan her şey, koşu model olmayan bir şeyi beklemek zorunda kaldığında olur.

Geçiş tablosunun tamamı

Geçersiz bir geçiş KAF_RUNTIME_INVALID_TRANSITION üretir. Koşu sonlandıktan sonra denenen bir geçiş KAF_RUNTIME_TERMINAL üretir. İkisi de yeniden denenebilir değildir.
verifying durumunun waiting_for_approval’a geri dönebildiğine dikkat edin. Doğrulama sonda atılan bir mühür değildir — başarısız bir doğrulayıcı koşuyu insan kararına geri gönderebilir.

Olaylar

Doğrulanmış komutlar sürümlenmiş RunEvent kayıtları ekler. Her birinin kararlı bir eventType’ı, bir sıra numarası ve katı bir yükü vardır.
RunAccepted · PlanningStarted · ExecutionStarted · RunSuspended · RunCompleted · RunFailed · RunCancelled
ModelCallStarted · ModelCallCompleted — rezervasyon kimlikleri ve istek/yanıt özetleri taşır; asla prompt veya tamamlama içeriği taşımaz.
ToolCallRequested · ToolCallCompleted — araç kayıt özetini, argüman ve sonuç özetlerini taşır.
RetryScheduled · RetryResumedtimed_out, retryable veya uncertain sınıflandırmasıyla ve bir notBefore zaman damgasıyla.
InputRequested · InputSubmitted · ApprovalRequested · ApprovalRecorded · ApprovalRejected — karar kimlikleri ve özetler taşır, ham kanıt taşımaz.
EffectPrepared · EffectDispatched · EffectAcknowledged · EffectUncertain · EffectNeedsReconciliation · EffectReconciliationRecorded · EffectAbandoned · CompensationRequested · EffectCompensated
ArtifactProduced · VerificationStarted · VerificationRecorded · VerificationExceptionRecorded
İçselleştirmeye değer iki yük detayı:
  • EffectNeedsReconciliation ve EffectAbandoned, effectMayHaveOccurred: true değerini literal olarak taşır. Şema, bu durumları etkinin kesinlikle olmadığını ima ederek kaydetmenize izin vermez.
  • RunFailed.errorCode, /^KAF_[A-Z0-9_]+$/ ile kısıtlıdır. Başarısızlık nedenleri yapısı gereği makine tarafından okunabilirdir.

Projeksiyonlar

Şekil 2. RunProjection; status, lastSequence, currentStepId, resumeTarget, bekleyen kimlikler, artifact ve doğrulama kimlikleri ile terminalErrorCode taşır. Hepsi türetilmiştir. Projeksiyon türetilmiş olduğu için bir olay sırasında silip yeniden kurabilir ve karşılaştırabilirsiniz — bir uyuşmazlık, koşuda değil katlama işleminizde bir sorun olduğunu söyler.

Kalıcılık ve güvenli devam

Şekil 3. Fencing token’lı veritabanı-zamanlı kiralar. Ölümden dönen bir worker daha yeni bir sahibin üzerine commit edemez, çünkü token’ı tanımı gereği bayattır. Kalıcı Postgres komutları; idempotency kayıtlarını, yetkiyi, olay mutasyonunu ve uyandırma durumunu tek bir atomik birimde bağlar. Korumalı bağlam tenant kapsamlı ve amaca bağlıdır; böylece devam etme, başka bir tenant’ın verisine arka kapı hâline gelmez.
Kurtarma, kalıcı gerçekten taze bir süreçte başlar. Mimariniz orijinal isteğin hâlâ açık olduğunu varsayıyorsa — tutulan bir yanıttan çıkarsanan arka plan işi, bellekte devam durumu, uzun bir fonksiyon zaman aşımı — elinizde dayanıklılık değil uzun bir istek vardır.

En-az-bir-kez ve bu konuda dürüst

Pactmark, denetimli etkilerle en-az-bir-kez yürütme kullanır. Küresel tam-bir-kez teslim iddia etmez. Belirsiz bir etki, kayıtlı stratejisi — native, transactional, reconcilable veya none — eylem izni verene ya da ayrıca yetkilendirilmiş bir telafi koşusu başlatılana kadar park edilmiş kalır.

Araçlar ve etkiler

Her etki stratejisinin gerçekte ne iddia ettiği ve neyi iddia etmeyi reddettiği.

Güvenilirlik ve kurtarma

Kiralar, RPO/RTO, park edilmiş işlerin izlenmesi ve yerel çökme testlerinin kanıtlamadıkları.