think
16px
820px

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/2origin/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

gantt dateFormat YYYY-MM-DD axisFormat %d %b section Nirlaba Perbaiki 5 blocker (3,5 jam) :a1, 2026-08-19, 1d Merge dev/2 ke master :a2, after a1, 1d Deploy staging + dump DB dulu :a3, after a2, 1d section Gladi bersih Gladi Nirlaba (paling berisiko) :b1, 2026-08-22, 2d Gladi PP / Apostille / PT :b2, 2026-08-22, 2d Perbaikan hasil gladi :b3, 2026-08-25, 2d section Beku FREEZE — hanya blocker demo :crit, c1, 2026-08-26, 2d Demo :milestone, 2026-08-28, 0d

Do now (3 item)

  1. Perbaiki 5 blocker merge — ±3,5 jam, sudah dipetakan baris demi baris di atas
  2. Merge dev/2 → master, deploy staging — ambil dump DB staging lebih dulu
  3. 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.