# Prosedur peralihan dan pemulihan — templat yang dapat disesuaikan

Kasus Capordia adalah tim yang menangani kumpulan pekerjaan independen. Tujuannya
adalah melanjutkan pekerjaan yang teridentifikasi tanpa kehilangan penerimaannya. Interupsi
terencana dimungkinkan. Durasi yang dapat diterima, kriteria kualitas, dan tanggung jawab
diputuskan sebelum jendela migrasi.

## 1. Menetapkan tanggung jawab

| Peran | Tanggung jawab | Bukti yang harus disimpan |
|---|---|---|
| Pengendali peralihan | Memberi izin penghentian, perubahan otoritas, dan pemulihan | Keputusan dan waktu UTC |
| Penanggung jawab data | Membekukan masukan, mengontrol salinan dan inventaris | Manifes berversi dan sidik jari |
| Penanggung jawab pemrosesan | Menghentikan produsen, mengklasifikasikan upaya | Daftar kumpulan pekerjaan dan log proses |
| Penanggung jawab penerimaan | Membandingkan keluaran dan kriteria yang disepakati | Hasil, penolakan, dan persetujuan penerimaan |

Tim kecil dapat merangkap peran, tetapi orang yang menyatakan
penerimaan dan orang yang mengetahui cara menghentikan otoritas lama harus
dapat diidentifikasi. Templat CSV yang disediakan tidak mewajibkan nama orang.

## 2. Menetapkan referensi sebelum menyalin

Berikan setiap kumpulan pekerjaan pengenal yang stabil dan versi masukan.
Catat jalurnya, sidik jarinya, pemrosesan yang tepat, dan kriteria
penerimaannya. Bedakan antara upaya yang diluncurkan dan hasil yang diterima.
Simpan parameter dan dependensi yang diperlukan untuk pemulihan, termasuk
status komputasi yang dibutuhkan perangkat lunak Anda. Nama file `final`
tidak cukup untuk membuktikan penerimaan.

Dalam latihan, delapan kumpulan pekerjaan mewakili 48 kupon fiktif. Penerimaan
bergantung pada hasil deterministik dalam bilangan bulat; ini bukan model
checkpoint GPU. Delapan keluaran referensi dihitung sebelum pemutusan.

## 3. Menghentikan kedatangan pekerjaan baru

Tutup penerimaan kumpulan pekerjaan baru dan catat pengenal terakhir yang diterima.
Hentikan worker atau tunggu batas pemulihan yang direncanakan. Konfirmasikan
bahwa tidak ada proses dari mesin lama yang masih dapat menerima keluaran.
Klasifikasikan daftar: selesai, sedang berjalan, akan dipulihkan. Simpan jejak
kumpulan pekerjaan yang ambigu alih-alih menyatakannya selesai berdasarkan dugaan.

Dalam latihan, pemutusan pada LOT-004 menghasilkan 3 / 1 / 4. Peluncuran ulang tanpa
rekonsiliasi ditolak. Daftar dan hasilnya tetap bersama.

## 4. Menyalin, mengontrol, mengganti otoritas

Target harus memiliki kumpulan yang telah dibekukan, status yang diperlukan, dan program
yang kompatibel. Verifikasi sidik jari dan inventaris dari target.
Blokir pemulihan jika ada masukan yang hilang, jika manifes telah berubah, atau jika
hasil tidak lagi sesuai dengan sidik jarinya dan aturan penerimaannya.

Dalam latihan ini, `basculer` terlebih dahulu menutup sumber, lalu menyalin
file setelah koneksi ditutup. Program membuka target untuk
produksi hanya setelah kontrol. Jangan meniru penyalinan panas dari
basis data aktif di luar prosedur ini. Kegagalan membuat sumber tetap berhenti.

Dalam sistem nyata, penutupan file lokal tidak mencegah mesin lama
yang terisolasi untuk terus berjalan. Hak publikasi eksklusif harus
diberlakukan oleh sistem yang menerima hasil, dengan penolakan hak lama
dan bukti penolakan tersebut. Program ini tidak menyediakan perlindungan tersebut.

## 5. Merekoniliasi dan menerima

Verifikasi bahwa semua hasil yang selesai tersedia dan dapat diterima.
Upaya yang sedang berjalan tanpa penerimaan dikembalikan untuk dipulihkan setelah
konfirmasi penghentian produsen lamanya. Lakukan pemulihan terbatas
sebelum membuka kembali penerimaan. Hitung kumpulan pekerjaan yang diharapkan, pengenal
unik yang diterima, kesalahan, dan pemulihan. Catat penerimaan
yang berbeda dari sekadar berakhirnya proses.

Dalam program: `preparer-reprise` mengubah satu-satunya kumpulan pekerjaan yang sedang berjalan menjadi kumpulan
yang akan dipulihkan. `executer` tidak menghitung ulang tiga kumpulan pekerjaan yang selesai. Kontrol
akhir mensyaratkan delapan keluaran yang diterima dan identik dengan referensi. LOT-004 memiliki
dua upaya, tetapi hanya satu keluaran yang diterima.

## 6. Memicu pemulihan berdasarkan sinyal yang dapat diamati

| Sinyal | Keputusan yang diusulkan untuk latihan ini |
|---|---|
| Sidik jari masukan berbeda | Blokir sebelum pemrosesan; temukan kembali versi yang dibekukan |
| Hasil hilang atau berubah | Blokir penerimaan; periksa batch dan status |
| Dua otoritas yang mungkin | Hentikan pengambilalihan; tetapkan otoritas tunggal |
| Program tidak dapat melanjutkan | Biarkan penerimaan tetap tertutup dan pindahkan status terbaru ke lingkungan yang kompatibel |
| Batas waktu jendela terlampaui | Terapkan keputusan dan batas yang ditetapkan tim sebelum peralihan |

Jika target sudah menerima hasil baru, kembali ke salinan lama
dari sumber akan kehilangan penerimaan tersebut. Bekukan target, ekspor status
terbarunya, verifikasi, dan pindahkan ke lokasi pengembalian baru.
Rekonsiliasi hasil sebelum memulai ulang. Jika ada efek eksternal,
inventarisnya menjadi bagian dari pengembalian; latihan ini tidak menghasilkan efek tersebut.

```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
```

Setelah operasi ini, `manuel/source` dan `manuel/cible` ditutup. Hanya
`manuel/retour` yang dapat bekerja. Jika penyalinan gagal atau jika kontrol menolak
suatu hasil, simpan bukti dan jangan buka kunci dua produsen.

## 7. Menutup migrasi

Simpan manifes, register sebelum/sesudah, sidik jari, hasil kontrol,
versi program, keputusan kelanjutan, dan keputusan pengembalian jika ada.
Hapus salinan lama hanya setelah periode penyimpanan yang dipilih
oleh tim. Latihan ini tidak menghapus folder apa pun; sumber dayanya
fiktif dan dapat diarsipkan bersama laporan.
