Rencana Development Menuju Demo 28 Agustus
Dibuat: 18 Agustus 2026 · Sisa: 10 hari
Master: 6a3c9c99 · Staging: sinkron dengan master
Temuan utama: satu domain penuh belum masuk master
dev/1 (Marvella, 25 commit) dan dev/2 (Viernicia, 37 commit) membangun
seluruh domain Nirlaba — Yayasan + Perkumpulan — dan tidak ada satu pun di
master maupun staging.
dev/2 sudah memuat dev/1 (ada merge commit di dalamnya), jadi ini satu
keputusan merge, bukan dua.
Yang ada di dalamnya:
| Alur Nirlaba | Backend | Frontend |
|---|---|---|
| Perubahan (Y+P) | ✅ end-to-end | ✅ select/upload/review/status |
| Perbaikan (Y+P) | ✅ end-to-end | ✅ select/upload/review/status |
| Pembubaran (Y+P) | ✅ verifikator-staged | ✅ + form SABH parity (kuorum/koran/checklist) |
| Penggabungan Yayasan | ✅ multi-source | ✅ select/upload/review/status |
| Dashboard | — | ✅ 3 tab: Perseroan Terbatas vs Perkumpulan & Yayasan |
| Surat Keterangan Perbaikan | — | ✅ generator + list (Phase 1) |
Staging hari ini hanya punya PENDIRIAN_YAYASAN (2 baris). Semua transaksi
Nirlaba di atas tidak bisa didemokan hari ini.
Hasil uji merge (sudah dijalankan, bukan perkiraan)
origin/dev/2 → origin/master di worktree bersih, dengan install penuh
(root + backend + frontend) dan prisma generate:
| Pemeriksaan | Hasil |
|---|---|
| Konflik merge | 0 — merge bersih. 124 file, +9.686 / −721 |
tsc backend |
0 error |
tsc frontend |
0 error |
| Test frontend | 1223 / 1223 lulus |
| Test backend | 3706 lulus, 5 gagal |
| Migrasi Prisma baru | 4 |
Kabar baiknya: tidak ada konflik, tidak ada error tipe, frontend hijau penuh.
Kelima kegagalan backend semuanya fitness test — aturan arsitektur yang
lahir di master setelah cabang dev bercabang. Semuanya mekanis.
Lima blocker merge, lengkap dengan estimasi
Diurutkan: bug sungguhan dulu, kerapian belakangan.
1. Empat route Nirlaba menghapus Document tanpa menghapus filenya — BUG
routes/nirlaba-perbaikan.ts:110
routes/nirlaba-pembubaran.ts:149
routes/nirlaba-perubahan.ts:207
routes/nirlaba-penggabungan.ts:139
Ini kebocoran orphan yang sama persis yang sudah diperbaiki di alur lain bulan
lalu — file menumpuk di uploads/ selamanya. Bukan sekadar pelanggaran aturan.
Perbaikan: alirkan lewat services/document-gc.ts (purgeDocuments /
deleteSubmissionWithDocuments), pola yang sudah ada. ±1,5 jam.
2. NIRLABA_ENTITY_EARLY_URL tidak terdaftar sebagai dependensi model
Upstream tak terdokumentasi tidak bisa dibedakan dari orphan saat ada yang mati
diam-diam. Perbaikan: satu entri di model-dependencies.ts —
GATEWAY_MODEL_DEPENDENCIES (kalau lewat gateway) atau NON_GATEWAY_SERVICE_URLS
(kalau bukan). ±15 menit.
3. nirlaba-pembubaran.ts membaca c.req.json() mentah
Melewati validateBody, jadi body cacat lolos ke handler. ±30 menit.
4. routes/submissions.ts membengkak jadi 2311 baris (plafon 2270)
Ratchet ukuran file. Perbaikan: ekstrak ±50 baris ke modul fokus — sama
seperti klasifikasi-coarse-classify.ts dulu. ±1 jam.
5. Empat pasang route Nirlaba adalah copy-fork
nirlaba-perbaikan | nirlaba-perubahan 0,503
nirlaba-pembubaran | nirlaba-perbaikan 0,483
nirlaba-pembubaran | nirlaba-perubahan 0,441
nirlaba-penggabungan| nirlaba-perbaikan 0,422
Rekomendasi menjelang demo: JANGAN refactor sekarang. Daftarkan keempatnya
ke GRANDFATHERED di no-new-forks.test.ts dengan catatan migrasi — daftar itu
memang dirancang sebagai to-do strangler. Menyatukan 4 route sepekan sebelum
demo adalah perubahan berisiko tinggi dengan imbalan nol di panggung.
±20 menit sekarang, sisakan refactor untuk setelah demo.
Total menuju hijau: ±3,5 jam. Bukan berhari-hari.
Dua celah yang tidak terlihat dari angka test
Frontend Nirlaba praktis tanpa test
Merge menambah 18 halaman baru di frontend/src/pages dan nol file test
frontend baru. Jumlah test frontend naik 1222 → 1223.
Backend lebih baik: 6 file test baru untuk rules Nirlaba.
Artinya, satu-satunya bukti bahwa 18 halaman itu bekerja adalah seseorang
membukanya. Itu menaikkan taruhan gladi bersih, dan itu juga alasan gladi
bersih Nirlaba harus dijalankan lebih awal, bukan di hari terakhir.
4 migrasi Prisma baru
20260813140000_nirlaba_perbaikan_carrier_doctypes
20260813150000_nirlaba_pembubaran_enums
20260813160000_nirlaba_penggabungan_yayasan
20260818120000_nirlaba_pembubaran_form
Container staging menjalankan prisma migrate deploy saat start, jadi ini
otomatis — tapi maju-saja, tidak bisa mundur. Setelah staging menerima
migrasi ini, rollback ke image lama berarti skema lebih baru dari kodenya.
Ambil dump DB staging sebelum deploy Nirlaba pertama.
Satu flake, bukan blocker
ptPendirianReviewProjection gagal di suite penuh, lulus sendirian (21/21).
Ini rebutan test DB bersama, pola yang sama yang dulu memaksa timeout vitest naik
ke 15 detik. Bukan penghalang merge; jangan dikejar sekarang.
Rencana 10 hari
Do now (3 item)
- Perbaiki 5 blocker merge — ±3,5 jam, sudah dipetakan baris demi baris di atas
- Merge
dev/2→ master, deploy staging — ambil dump DB staging lebih dulu - Gladi bersih Nirlaba paling awal — 18 halaman tanpa test, jadi risikonya paling tinggi
Freeze: 26 Agustus
Setelah 26 Agustus, hanya blocker demo yang boleh masuk master. Perubahan hari
H−1 adalah cara paling umum merusak demo yang tadinya sudah jalan.
Later (setelah demo)
- Satukan 4 copy-fork route Nirlaba (hapus dari
GRANDFATHERED) - Test frontend untuk 18 halaman Nirlaba
- Sapuan
uploads/klasifikasi-temp(948 MB, tak pernah dibersihkan sejak 8 Juli) - Halaman 404 yang ramah, ganti ErrorBoundary mentah
Keputusan yang perlu diambil
Semua di atas mengasumsikan Nirlaba ikut demo. Kalau tidak, coret seluruh
bagian Nirlaba: master hari ini sudah hijau dan staging sudah terbukti jalan —
tinggal gladi bersih PP / Apostille / PT saja.
Pilihannya:
| Opsi | Konsekuensi |
|---|---|
| A. Nirlaba ikut | ±3,5 jam kerja + 2 hari gladi. Demo mencakup Yayasan & Perkumpulan. Risiko: 18 halaman tanpa test |
| B. Nirlaba ditunda | Nol kerja merge. Demo = PP + Apostille + PT saja, semua sudah terbukti. dev/1/dev/2 makin jauh dari master |
| C. Merge sekarang, demo sebagian | Kode masuk master (cabang tidak makin jauh), tapi hanya alur Nirlaba yang lulus gladi yang ditampilkan |
Rekomendasi: C. 62 commit yang menganggur adalah utang yang membesar tiap
hari, merge-nya sudah terbukti bersih, dan memutuskan alur mana yang tampil bisa
ditunda sampai hasil gladi bersih keluar.