# Checklist Kesiapan Pilot SIPORA

Checklist go/no-go sebelum SIPORA dipakai oleh sekolah pilot sungguhan. Diisi oleh pemilik
produk/penanggung jawab teknis, bukan otomatis — setiap item perlu bukti konkret (tautan,
tanggal, nama penguji), bukan sekadar dicentang.

## 1. Kesiapan teknis

- [ ] Semua migrasi database diterapkan di environment produksi (`php tools/migrate.php status`
      bersih, tanpa yang pending).
- [ ] `/superadmin/health` menunjukkan semua pemeriksaan `ok` (backup boleh `warning` HANYA
      jika belum genap 48 jam sejak deploy pertama; setelah itu harus `ok`).
- [ ] Backup harian terjadwal & terbukti jalan otomatis minimal 3 hari berturut-turut
      (lihat `RUNBOOK_BACKUP.md`) — bukan cuma sekali dites manual.
- [ ] **Uji restore penuh sudah dijalankan di environment staging terpisah** (bukan
      produksi) dalam 30 hari terakhir, hasilnya dicatat — backup yang belum pernah diuji
      restore-nya tidak boleh dianggap valid (lihat `RUNBOOK_BACKUP.md`).
- [ ] MFA aktif untuk SEMUA akun Super Admin produksi (bukan cuma didemokan).
- [ ] `.env` produksi: `APP_DEBUG=false`, `APP_ENV=production`, `APP_KEY` unik (BUKAN nilai
      yang sama dipakai saat development), kredensial database bukan default.
- [ ] HTTPS aktif di domain produksi (cookie sesi & CSRF tidak berarti tanpa ini — token
      siswa/staf bisa disadap di jaringan tanpa HTTPS).
- [ ] Uji beban dijalankan terhadap environment produksi/staging SUNGGUHAN (bukan `php -S`
      lokal) sesuai `RUNBOOK_LOAD_TESTING.md`, dengan target konkurensi yang disepakati
      pemilik produk — hasil didokumentasikan.

## 2. Kesiapan data

- [ ] Bila ada migrasi data dari sistem lama: staging CSV (`sekolah.csv`/`kelas.csv`/
      `guru_bk.csv`) sudah disiapkan dari data sungguhan (bukan `storage/legacy-samples/`
      yang sintetis) — lihat `RUNBOOK_LEGACY_MIGRATION.md`.
- [ ] Dry-run migrasi legacy sudah dijalankan & ditinjau SEBELUM `--commit` ke produksi.
- [ ] Setelah `--commit`: laporan link aktivasi (`storage/legacy-import-reports/`) sudah
      didistribusikan ke masing-masing admin/guru BK lewat kanal aman, lalu file laporan
      dihapus dari server.
- [ ] Bila tidak ada migrasi legacy (sekolah pilot mulai dari nol): dilewati, tandai N/A.

## 3. Kesiapan proses & dukungan

- [ ] Ada kontak dukungan yang jelas untuk sekolah pilot bila menemui masalah (bukan
      langsung ke developer tanpa saluran resmi).
- [ ] Ada rencana rollback bila pilot bermasalah parah (kembali ke proses manual sekolah,
      atau ke sistem lama bila masih berjalan paralel) — didiskusikan & disepakati, bukan
      diasumsikan.
- [ ] Penanggung jawab teknis tahu cara membaca `storage/logs/YYYY-MM-DD.log` dan mencari
      "Kode referensi" dari pesan error yang dilihat pengguna.
- [ ] Retensi backup & audit log jangka panjang sudah didiskusikan (lihat catatan kapasitas
      di `RUNBOOK_LOAD_TESTING.md` soal `audit_logs`/`auth_attempts` yang tumbuh tanpa
      arsip otomatis) — tidak harus selesai sebelum pilot, tapi harus ada rencana.

## 4. Kesiapan pengguna (UAT)

- [ ] `UAT_PLAN.md` sudah dijalankan oleh orang selain developer (idealnya calon pengguna
      nyata dari sekolah pilot), semua skenario Peran 1-4 dicoba.
- [ ] Semua skenario "Isolasi lintas sekolah" (bagian 2.5 di `UAT_PLAN.md`) LOLOS tanpa
      kecuali — ini bukan boleh-gagal-sedikit, satu kebocoran data lintas sekolah adalah
      blocker mutlak untuk pilot.
- [ ] Temuan UAT yang berstatus "gagal" sudah ditindaklanjuti (diperbaiki & diuji ulang, atau
      didokumentasikan sebagai keterbatasan yang diterima untuk fase pilot ini).

## 5. Batasan yang perlu diketahui sekolah pilot (bukan blocker, tapi harus dikomunikasikan)

- [ ] Peta jaringan/co-occurrence (visualisasi kemunculan bersama dimensi/flag antar siswa)
      belum dibangun — sengaja ditunda dari Fase 3, bisa ditambahkan sebagai subfase
      terpisah bila dibutuhkan.
- [ ] `tools/load-test.php` belum mendukung pengujian endpoint berautentikasi (login,
      dashboard, submit) — hanya endpoint publik seperti `/health`.
- [ ] Notifikasi email (aktivasi akun, reset password, link tindak lanjut) belum
      terintegrasi dengan pengirim email sungguhan — saat ini tautan aktivasi/reset
      ditampilkan langsung di layar (mode dev) atau perlu didistribusikan manual oleh admin.

---

## Keputusan akhir

**Status:** ☐ LAYAK PILOT &nbsp;&nbsp; ☐ BELUM LAYAK — perlu: _______________________

**Disetujui oleh:** _______________________ **Tanggal:** _______________________
