# Geçiş ve geri dönüş prosedürü — uyarlanacak şablon

Capordia örneği, bağımsız partileri işleyen bir ekiptir. Amaç, tanımlanmış
işleri kabul durumlarını kaybetmeden devralmaktır. Planlı bir kesinti
mümkündür. İzin verilen süre, kalite ölçütleri ve sorumluluklar geçiş
penceresinden önce kararlaştırılır.

## 1. Sorumlulukları belirleyin

| Rol | Sorumluluk | Saklanacak kanıt |
|---|---|---|
| Geçiş sürücüsü | Durdurma, yetki değişikliği ve devam etmeyi yetkilendirir | Karar ve UTC saati |
| Veri sorumlusu | Girdileri dondurur, kopya ve envanteri denetler | Sürümlenmiş manifest ve parmak izleri |
| İşleme sorumlusu | Üreticiyi durdurur, denemeleri sınıflandırır | Parti kaydı ve süreç günlüğü |
| Teslim alma sorumlusu | Çıktıları ve kararlaştırılan ölçütleri karşılaştırır | Sonuçlar, redler ve teslim alma anlaşması |

Küçük bir ekip rolleri birleştirebilir, ancak kabulü bildiren kişi ile eski
yetkiyi durdurmayı bilen kişi tanımlanabilir olmalıdır. Sağlanan CSV şablonu
hiçbir kişi adı dayatmaz.

## 2. Kopyalamadan önce referansı oluşturun

Her partiye kalıcı bir tanımlayıcı ve bir girdi sürümü atayın.
Yolunu, parmak izini, tam işlemi ve kabul ölçütünü kaydedin. Başlatılmış bir
denemeyi kabul edilmiş bir sonuçtan ayırın. Devam etmek için gereken
parametreleri ve bağımlılıkları, yazılımınızın gerektirdiği hesaplama
durumları dahil olmak üzere saklayın. `final` adlı bir dosya adı
bir kabulü kanıtlamaya yetmez.

Alıştırmada, sekiz parti 48 kurgusal kuponu temsil eder. Kabul,
tam sayılarla deterministik bir sonuca dayanır; bu bir GPU checkpoint modeli
değildir. Sekiz referans çıktısı kesintiden önce hesaplanır.

## 3. Yeni işlerin girişini durdurun

Yeni partilerin kabulünü kapatın ve kabul edilen son tanımlayıcıyı not edin.
Worker'ı durdurun veya öngörülen devam sınırını bekleyin. Eski makinedeki
hiçbir sürecin hâlâ çıktı kabul edemeyeceğini doğrulayın. Kaydı sınıflandırın:
tamamlandı, sürüyor, devam edecek. Belirsiz bir partinin izlerini varsayımla
tamamlandı ilan etmek yerine koruyun.

Alıştırmada, LOT-004 üzerindeki kesinti 3 / 1 / 4 verir. Uzlaştırma olmadan
yeniden başlatma reddedilir. Kayıt ve sonuçları bir arada kalır.

## 4. Kopyalayın, denetleyin, yetkiyi değiştirin

Hedef, dondurulmuş veri kümesine, gerekli duruma ve uyumlu programa sahip
olmalıdır. Parmak izlerini ve envanteri hedeften doğrulayın. Bir girdi
eksikse, manifest değiştiyse veya bir sonuç artık parmak iziyle ve kabul
kuralıyla eşleşmiyorsa devam etmeyi engelleyin.

Bu alıştırmada `basculer` önce kaynağı kapatır, ardından bağlantılar
kapatıldıktan sonra dosyaları kopyalar. Program hedefi üretime yalnızca
denetimden sonra açar. Bu prosedür dışında etkin bir veritabanının sıcak
kopyasını taklit etmeyin. Bir başarısızlık kaynağı durdurulmuş bırakır.

Gerçek bir sistemde, yerel bir dosyanın kapatılması izole edilmiş eski bir
makinenin devam etmesini engellemez. Münhasır yayın hakkı, sonuçları alan
sistem tarafından dayatılmalı; eski haklar reddedilmeli ve bu reddin kanıtı
tutulmalıdır. Bu program söz konusu korumayı sağlamaz.

## 5. Uzlaştırın ve teslim alın

Tamamlanan tüm sonuçların mevcut ve kabul edilebilir olduğunu doğrulayın.
Kabulü olmayan sürmekteki denemeler, eski üreticilerinin durduğu
doğrulandıktan sonra devam edecek olarak işaretlenir. Kabulü yeniden açmadan
önce sınırlı bir devam etme yapın. Beklenen partileri, kabul edilen benzersiz
tanımlayıcıları, hataları ve devam etmeleri sayın. Sürecin basit sonundan
ayrı bir kabul kaydedin.

Programda: `preparer-reprise` sürmekteki tek partiyi devam edecek partiye
dönüştürür. `executer` tamamlanan üç partiyi yeniden hesaplamaz. Son denetim,
kabul edilmiş ve referansla aynı sekiz çıktı gerektirir. LOT-004'ün iki
denemesi vardır, ancak yalnızca bir kabul edilmiş çıktısı.

## 6. Geri dönüşü gözlemlenebilir bir sinyalle tetikleyin

| Sinyal | Bu alıştırma için önerilen karar |
|---|---|
| Farklı giriş parmak izi | İşleme başlamadan önce engelle; dondurulmuş sürümü bul |
| Eksik veya değiştirilmiş sonuç | Alımı engelle; partiyi ve durumu incele |
| İki olası yetkili | Devralmayı durdur; tek bir yetkili belirle |
| Programın devam edememesi | Kabulü kapalı tut ve güncel durumu uyumlu ortama aktar |
| Pencere süresinin aşılması | Geçişten önce ekibin belirlediği kararı ve sınırı uygula |

Hedef yeni sonuçları zaten kabul ettiyse, kaynağın eski kopyasına dönmek bu
kabulleri kaybettirir. Hedefi dondur, güncel durumunu dışa aktar, doğrula ve
yeni bir dönüş konumuna aktar. Yeniden başlatmadan önce sonuçları uzlaştır.
Dış etkiler mevcutsa, bunların envanteri dönüşün bir parçasıdır; bu alıştırma
hiçbirini üretmez.

```text
python exercice.py basculer --source manuel/cible --destination manuel/retour --proprietaire atelier-retour
python exercice.py preparer-reprise --dossier manuel/retour
python exercice.py executer --dossier manuel/retour
python exercice.py comparer --reference manuel/reference --candidat manuel/retour
```

Bu işlemden sonra `manuel/source` ve `manuel/cible` kapatılır. Yalnızca
`manuel/retour` çalışabilir. Kopyalama başarısız olursa veya kontrol bir
sonucu reddederse, kanıtları saklayın ve iki üreticiyi kilidini açmayın.

## 7. Geçişi kapatma

Manifestoyu, öncesi/sonrası kaydını, parmak izlerini, kontrol sonuçlarını,
program sürümünü, devralma kararını ve varsa dönüş kararını saklayın.
Eski kopyayı yalnızca ekibin seçtiği saklama süresinden sonra silin.
Alıştırma hiçbir klasörü silmez; kaynakları fiktiftir ve raporla birlikte
arşivlenebilir.
