00 README MULAI DI SINI
SAKILA — Baseline PRD v2.1 untuk audit dan rencana modernisasi
Tanggal: 11 Oktober 2026. Status: AUDIT-READY. Tidak sama dengan persetujuan deploy atau pengesahan otomatis seluruh keputusan bisnis.
SAKILA adalah ERP SaaS lintas organisasi. UMV adalah salah satu organisasi; wakaf Al-Qur’an Braille adalah salah satu program UMV. Program ≠ campaign ≠ modul perangkat lunak.
Mulai dari sini
16_PENETAPAN_BASELINE_AUDIT.md: acuan dan cara menangani konflik.17_KEPUTUSAN_IMPLEMENTASI_DAN_ADR.md: aturan desain aman dan keputusan bisnis yang belum sah.18_GERBANG_GO_NO_GO_DEPLOY.md: secara eksplisit menentukan apa yang boleh dilakukan sekarang.19_PAKET_KERJA_AGENT_AUDIT.md: instruksi audit dan rekomendasi reuse/refactor/rewrite per komponen.01–15: seluruh cakupan Candidate 2.0 dan bukti sebelumnya, tidak dihapus.MATRIKS_REQUIREMENT.csv: pekerjaan per requirement dan evidence.
Yang sudah tuntas: paket konsolidasi, kebijakan baseline audit, gerbang rilis dan kontrak penugasan Agent. Yang belum tuntas secara faktual: pemeriksaan butir demi butir terhadap seluruh PRD warisan, keputusan komersial tertentu, pengujian end-to-end, dan persetujuan deploy. Dokumen ini tidak menyembunyikan hal tersebut.
01 PRD PRODUK DAN BISNIS
01 — PRD Produk, nilai bisnis dan batas cakupan
Status: DRAF editorial; keputusan resmi pemilik yang dikutip tetap berlaku.
1.1 Masalah yang diselesaikan
Lembaga mengelola orang, uang, program, komunikasi, bantuan, bukti pelaksanaan dan pelaporan dengan banyak alat terpisah. Dampaknya: input berulang, pembagian wewenang tidak jelas, histori koreksi kabur, dan bukti dampak sukar ditelusuri. SAKILA menargetkan satu alur kerja yang terhubung dan dapat diaudit, tanpa memaksakan model operasional satu lembaga kepada lembaga lain.
1.2 Posisi produk
SAKILA = ERP SaaS lintas organisasi, dengan web backoffice, aplikasi mobile Flutter dan API backend yang menjadi sumber data bersama. Bukan aplikasi wakaf Braille generik, bukan perangkat lunak yang wajib memakai WhatsApp/AI, dan bukan sistem keuangan yang boleh memotong persentase donasi.
1.3 Segmen dan aktor
Pelanggan adalah organisasi/lembaga (yayasan, LSM, rumah ibadah, dan organisasi sosial relevan). Pengguna meliputi administrator lembaga, pengelola program, petugas keuangan, CS/CRM, pelaksana lapangan, pimpinan, auditor, dan pengguna publik sesuai modul serta izin. Role yang tepat tidak diputuskan lewat contoh ini; matriks izin detail mengacu ke PRD V5.2 §02/§04.
1.4 Janji inti
- Data organisasi dipisahkan dengan ketat.
- Program beragam dan tidak dikunci ke jenis wakaf tertentu.
- Modul dapat dikombinasikan menurut kebutuhan organisasi dan ketentuan paket.
- Peristiwa finansial dan perubahan kritis mempunyai jejak audit.
- Semua jalur penting dapat dioperasikan secara aksesibel.
- Modul/program khusus tetap bisa dipakai lembaga awal tanpa menjadi default universal.
1.5 Model bisnis resmi
Freemium SaaS dengan layanan premium dan white-label; tidak mengambil persentase dari donasi/wakaf. Integrasi AI dan komunikasi menggunakan prinsip BYOK per lembaga (biaya provider bukan dibebankan diam-diam kepada pemilik platform). Detail harga, kuota, SLA, fitur paket dan penagihan belum disetujui dalam paket ini.
1.6 Contoh yang dapat dipahami semua orang
- UMV: menyelenggarakan program wakaf Al-Qur'an Braille; menggunakan modul penghimpunan, keuangan, logistik, penyaluran dan laporan; dapat memakai logika Braille spesifik.
- Yayasan pendidikan: menyelenggarakan beasiswa; memakai pendaftaran, asesmen, persetujuan dana dan laporan tanpa logika Braille.
- Masjid: menyelenggarakan program pembangunan atau bantuan jamaah dengan kombinasi modul sesuai kebutuhan. Semua contoh selain UMV bersifat skenario desain, bukan klaim modul itu sudah selesai.
1.7 Di luar cakupan otomatis
Paket ini tidak menyetujui migrasi tenant, pemecahan database, perubahan akuntansi, penerbitan layanan publik, ataupun perubahan harga. Semua memerlukan desain, pengujian, dan persetujuan lanjutan.
1.8 Kriteria diterima
Pembaca dapat menjelaskan perbedaan SAKILA–organisasi–program–modul, dan tidak menyebut Braille sebagai default platform. Agent tidak menurunkan fitur V6 menjadi pekerjaan langsung tanpa change request.
02 KAMUS DAN MODEL DOMAIN
02 — Kamus domain dan relasi data
2.1 Istilah normatif
| Istilah | Arti | Tidak sama dengan |
|---|---|---|
| Platform SAKILA | Produk ERP SaaS | Program Braille |
| Organisasi/tenant | Lembaga pengguna dengan batas data dan konfigurasi sendiri | Program, cabang |
| Cabang/unit | Bagian dalam satu organisasi sesuai kebijakan organisasinya | Tenant independen secara otomatis |
| Program | Aktivitas organisasi yang berkelanjutan atau terikat tujuan | Modul aplikasi |
| Campaign | Upaya penghimpunan/komunikasi khusus yang terkait program bila perlu | Seluruh program |
| Modul bisnis | Fitur perangkat lunak yang tersedia melalui paket dan izin | Program organisasi |
| Plugin jenis program | Strategi aturan untuk jenis program tertentu | Hak langganan modul |
| Integrasi | Koneksi layanan eksternal dengan izin/credential lembaga | Modul wajib semua tenant |
| Role/permission | Otorisasi tindakan pengguna | Paket yang dibeli |
| Paket/langganan | Hak memperoleh fungsi tertentu dalam suatu periode | Otorisasi transaksi pengguna |
| Beneficiary/penerima manfaat | Pihak penerima manfaat program | Khusus tunanetra dalam core |
2.2 Relasi konseptual sasaran
Satu tenant mempunyai banyak unit/cabang, pengguna dan program; program dapat memiliki campaign, transaksi yang relevan dan kegiatan penyaluran; satu modul dapat dipakai banyak program dan satu program dapat memakai banyak modul. Plugin adalah perilaku khusus jenis program, bukan identitas organisasi. Relasi ini rancangan produk; kardinalitas implementasi perlu diturunkan ke desain database.
2.3 Alur informasi konseptual
Organisasi → Program → Campaign (opsional) → Transaksi → Verifikasi → Penggunaan/alokasi → Penyaluran/kegiatan → Bukti → Laporan. Seluruh tahapan tunduk pada otorisasi, audit dan retensi yang berlaku; tidak setiap program memiliki transaksi donasi atau proses penyaluran fisik.
2.4 Temuan LAB terverifikasi dari source (11 Oktober 2026)
app/Models/Program.php memiliki plugin_key, relasi transactions() dan programUpdates(); app/Models/Campaign.php memiliki relasi ke Program dan Transaction; app/Models/Distribution.php memiliki relasi ke Program; app/Models/Transaction.php memiliki relasi ke Program dan Campaign. Penelusuran migrasi belum menemukan referensi tenant_id atau organization_id. Ini bukan audit keseluruhan database runtime.
2.5 Risiko default legacy
Pada Model Program, ProgramController, DonationService, DonationController dan migrasi 2026_06_13_151500_create_program_plugins_table.php, terdapat default braille_waqf. Jangan menghapusnya secara otomatis: perlu inventaris pemanggil, analisis transaksi lama, strategi kompatibilitas, tes regresi dan persetujuan. Target desain: program baru non-UMV tidak otomatis menjadi Braille; pilihan yang aman untuk data legacy perlu diputuskan secara eksplisit.
2.6 Acceptance desain
Dokumen desain dan tes harus membuktikan pembuatan program umum tanpa konversi Braille yang tidak diminta, serta bahwa program Braille historis tetap dapat dibaca dan dilaporkan dengan benar.
03 KATALOG MODUL
03 — Katalog modul, plugin dan kepemilikan
Penting: Katalog berikut memisahkan kode ditemukan, status fitur, dan status SaaS; tidak menyebutnya semuanya siap produksi.
| Area | Jenis | Dasar LAB / dokumen | Kesimpulan status |
|---|---|---|---|
| Program, campaign, transaksi | Core domain operasional saat ini | Model Laravel | Source ada; alur end-to-end belum diaudit di sini |
| Plugin Braille, zakat, wakaf umum, donasi | Plugin jenis program | app/Plugins/Programs/* |
Source ada; tidak identik dengan modul berlangganan |
| Keuangan, kas, adjustment | Modul/baseline aturan kritis | PRD V5.2 §03, §06, handoff | Kontrak detail ada; bukti runtime perlu diverifikasi per skenario |
| CRM, omnichannel, WhatsApp | Modul/integrasi | PRD V5.2 §11; kode komunikasi | Source sebagian ditemukan; tidak otomatis siap multi-tenant |
| VoIP | Modul bisnis | ProgramPluginController toggle; handoff |
Kode dan bukti terbatas; jangan ganggu worktree VoIP aktif |
| Koperasi | Modul bisnis | app/Plugins/Koperasi/* |
Source ditemukan; status pengujian belum diputuskan |
| Logistik lapangan | Modul bisnis | Toggle field_logistics, Distribution |
Source ada; pemisahan alur spesifik Braille perlu diperiksa |
| CMS publik | Modul bisnis | Toggle cms |
Source toggle ditemukan; kesiapan tidak dinilai |
| Pembayaran Midtrans | Integrasi/module | app/Plugins/Payment/* |
Source ditemukan; keamanan dan reliabilitas perlu diuji |
| HRD, payroll, pajak, persuratan | Target modul ERP | PRD V6 §02 | Rencana/fitur parsial tergantung audit; tidak boleh diklaim selesai |
| Tenant, paket, billing, entitlements | Infrastruktur SaaS | Keputusan pemilik 16 Sep | Target resmi; implementasi belum terbukti |
| White-label | Kemampuan platform | PRD V5.2 §14, V6 | Sasaran; bukti implementasi perlu per kanal |
Perbedaan tiga pengendalian
- Katalog modul: fitur apa tersedia secara teknis.
- Entitlement/paket organisasi: fitur mana yang berhak dipakai tenant.
- Permission individu: siapa boleh menjalankan aksi dalam tenant. Ketiganya harus diperiksa bersamaan di backend. Menyembunyikan menu saja bukan keamanan.
Kebijakan plugin program
Plugin harus punya kontrak perilaku (input, output, kesalahan, kompatibilitas) dan pengaturan scoped tenant pada arsitektur sasaran. Fallback global braille_waqf adalah utang transisi; perubahan tidak boleh menafsir ulang transaksi historis.
Definition of Done modul
Daftar dependency, izin, skema data, API, status aktivasi, migrasi, tes otomatis, tes aksesibilitas, rollback dan pemilik bisnis terdokumentasi; bukti tiap tenant terisolasi diperlukan sebelum modul masuk SaaS multi-tenant.
04 ARSITEKTUR SAAS DAN TENANCY
04 — Arsitektur SaaS, organisasi dan isolasi
Keputusan resmi
Database terpisah per organisasi/tenant adalah target yang telah dipilih pemilik. Cabang/unit bukan tenant tersendiri kecuali ada keputusan bisnis dan kontrak khusus. Sasaran: organisasi mendaftar, disiapkan lingkungan datanya, memilih paket, mengaktifkan modul, memakai mereknya sendiri, dan mengelola integrasi BYOK.
Batas antara saat ini dan target
LAB saat ini mempunyai model Program/Campaign/Transaction dan konfigurasi modul melalui Settings yang tidak terbukti scoped tenant. Belum ditemukan migrasi bertuliskan tenant_id atau organization_id dalam pemeriksaan source. Jangan menyimpulkan tenancy sudah siap maupun mustahil dibangun dari temuan terbatas ini.
Kebutuhan produk (harus dibuktikan sebelum rilis SaaS)
- Tenant provisioning aman, idempotent dan diaudit; kegagalan provisioning dapat dipulihkan tanpa database yatim.
- Request backend harus menyelesaikan identitas tenant secara autentik; tenant A tidak bisa membaca/mengubah tenant B.
- Database, backup, restore, jadwal job, event, queue, cache, media dan log mempertahankan batas tenant.
- Plugin/setting, API credentials dan white-label dipisah per tenant; secret disimpan terenkripsi dan tidak tercetak di log.
- Entitlement free/premium dilakukan di backend dengan izin pengguna; peningkatan/penurunan paket tidak merusak histori.
- Dukungan dan super admin tidak boleh menyamar sebagai pengguna bisnis tanpa batas, audit, dan otorisasi khusus.
- Onboarding, offboarding, ekspor dan retensi mengikuti kebijakan privasi yang disetujui.
Desain yang belum final
Pilihan database control-plane, pemetaan tenant ke koneksi, subdomain/domain, shared identity vs separate identity, billing provider, kuota, lingkungan preview dan migrasi UMV perlu Architecture Decision Record (ADR). Agent tidak boleh mengarang keputusan ini.
Tes penerimaan wajib
Dua tenant dengan nama program identik mempunyai data terisolasi; tenant A tidak dapat melihat transaction, file, cache, notifikasi, laporan atau credential B, termasuk via URL langsung/API/background job. Setiap klaim PASS membutuhkan bukti test dan tanggal.
05 KEUANGAN DAN TATA KELOLA
05 — Keuangan, pengendalian dan integritas data
Bab berisiko tinggi. Dokumen ini adalah panduan baca; detail state machine, ledger, permission dan audit tidak boleh dipersingkat menjadi implementasi baru. Referensi kontrak: PRD V5.2 §02–§06, §08, §12, §16, §19 dan SAKILA_MASTER_HANDOFF.md §6–§7.
Prinsip wajib yang harus tetap dipertahankan
- Fakta finansial awal, nilai saat ini dan riwayat koreksi harus dibedakan. Tidak ada perubahan yang diam-diam menghapus bukti asli.
- Verifikasi, koreksi sebelum verifikasi, adjustment setelah verifikasi dan penolakan mengikuti alur persetujuan, keadaan transaksi, kewenangan, atomicity dan audit PRD V5.2.
- Permission dan separation of duties ditegakkan server-side; super admin bukan izin universal melakukan aksi bisnis.
- Transaksi finansial yang punya side effect harus aman terhadap retry, concurrency dan duplikasi.
- Rekonsiliasi, alokasi ke program/campaign, laporan dan penyaluran memakai nilai yang benar menurut definisi sumber; tidak boleh menyamakan total seluruh lembaga dengan perolehan program.
- Data penerima manfaat dilindungi sesuai tingkat sensitifnya; jangan menampilkan detail identitas tanpa kewenangan.
Celah definisi yang wajib diselesaikan sebelum migrasi
- Apakah transaksi lama yang tidak bertaut program/campaign dianggap data historis atau perlu reclassify?
- Bagaimana mempertahankan
original_amount,current_amount, state, ledger dan approval jika tenant dipisahkan? - Bagaimana rekonsiliasi dan pelaporan campaign berbeda dengan agregat program/organisasi?
- Bagaimana refund diperlakukan tanpa mengubah histori?
Acceptance dan bukti
Minimal mencakup correction sebelum verifikasi, penolakan dengan alasan, adjustment atomik pascaverifikasi, persetujuan tidak oleh aktor sama bila dilarang, pencegahan duplikasi, concurrency, dan laporan konsisten. Skenario Gherkin yang mengikat tetap berada di PRD V5.2 §08 sampai diturunkan tanpa kehilangan satu pun kondisi.
Larangan agent
Tidak mengubah schema/migration finansial atau membuka bypass hanya untuk membuat tes hijau. Jika pernyataan di ringkasan ini bertentangan dengan kontrak detail V5.2 atau keputusan pemilik, STOP dan catat konflik.
06 API INTEGRASI DAN KEAMANAN
06 — API, integrasi, privasi dan keamanan
Kontrak API
Web dan Flutter memakai backend API yang konsisten. Standar envelope, kompatibilitas klien lama dan endpoint detail mengikuti PRD V5.2 §07 serta dokumen API_ENVELOPE_STANDARD.md. API yang hidup di kode belum otomatis terbukti sesuai kontrak: verifikasi route, middleware, test, dan konsumen klien.
Identitas dan izin
Autentikasi, otorisasi role, izin per objek, tenant context dan entitlement adalah mekanisme berbeda. Semua operasi sensitif harus diverifikasi backend, bukan hanya tombol di UI.
Integrasi
Integrasi WhatsApp, AI Safira, pembayaran, SMS/email dan VoIP bersifat dapat dikonfigurasi sesuai modul. Kebijakan produk adalah BYOK per lembaga bila relevan. Credential, webhook, retry dan batas biaya harus diisolasi serta dimonitor. WhatsApp idempotency dan guard AI mengacu ke PRD V5.2 §10–§11; detail VoIP sesuai bukti handoff bertanggal, bukan janji umum kesiapan produksi.
Privasi dan retensi
Data pribadi dan data penerima manfaat harus diminimalkan, dibatasi berdasarkan kebutuhan/role, disimpan dengan keamanan memadai, dapat diaudit, dan dihapus/diarsip mengikuti jadwal retensi yang disetujui. Detail V5.2 §05 tetap mengikat sebagai baseline sampai direvisi secara eksplisit.
Dokumentasi publik vs internal
Portal HTML publik boleh menjelaskan model produk dan kontrak tanpa host SSH, username, file key, jalur deploy, secret, detail bypass maupun temuan keamanan sensitif. Halaman internal AI Agent harus dibatasi akses; jangan sekadar menyembunyikan link.
Acceptance
Cross-tenant authorization, perlindungan credential, webhook signature, retry/idempotency, deny-by-default, masking informasi pribadi, redaksi log, dan peran agent diuji dengan bukti negatif maupun positif.
07 AKSESIBILITAS DAN PENGALAMAN
07 — Pengalaman pengguna dan aksesibilitas universal
Prinsip
Aksesibilitas adalah syarat penerimaan tiap alur penting, bukan fase tambahan setelah produk jadi. Dokumen sumber V5.2 §09 berisi kewajiban baseline; audit menyeluruh pada roadmap V6 tidak boleh ditafsirkan sebagai izin merilis alur tidak aksesibel.
Web
Struktur heading logis, label input permanen, pesan error tersambung ke field, fokus yang terlihat, navigasi keyboard, status dinamis diumumkan, tabel mempunyai header, dialog menahan serta mengembalikan fokus, dan tidak menggantungkan informasi hanya pada warna atau ikon. Kegunaan diuji di NVDA dan JAWS untuk alur prioritas.
Mobile Flutter
Semantik label, role tombol, fokus TalkBack/VoiceOver, target sentuh, pengumuman status, dialog, login, verifikasi, daftar transaksi dan panggilan harus diuji dengan perangkat nyata sesuai fitur yang dirilis.
Alur minimum yang perlu diuji
Login; memilih organisasi bila relevan; navigasi menu; membuat program; membaca laporan; memverifikasi transaksi; melakukan approval sesuai role; memperbarui data; mengonfirmasi aksi; meninjau bukti penyaluran; mengatur modul (hanya bila sudah aktif).
Bukti penerimaan
Untuk setiap alur catat perangkat/OS, screen reader, versi aplikasi, langkah yang diuji, hasil, hambatan, dan koreksi. Skor checklist dokumentasi saja tidak setara dengan lulus uji pengguna.
08 PENGUJIAN DAN RILIS
08 — Pengujian, definisi selesai dan keamanan rilis
Lima status yang tidak boleh dicampur
Direncanakan → Ada kode → Lulus tes terisolasi → Lulus integrasi/UAT LAB → Diverifikasi production. Tidak ada langkah yang otomatis melompati lainnya. Klaim PASS selalu menyebut lingkup, tanggal, lingkungan dan bukti.
Sebelum development
Tentukan scope, sumber keputusan, sistem terdampak, risiko dana/data, kebijakan aksesibilitas, dependencies, rollback plan dan tes regresi. Catat branch dan dirty worktree; jangan mengganti berkas yang sedang dikembangkan agent lain.
Saat implementation LAB
Gunakan workspace/branch terpisah untuk pekerjaan besar, tinjau skema, tulis tes, eksekusi hanya pada LAB yang memang disetujui. Jangan memasukkan data rahasia ke artefak, log, maupun repo.
Safety Gate ke production
PRD V5.2 §16 adalah protokol detail wajib; bagian ini tidak memberi izin deploy. Terapkan backup/recovery, approval manusia, perbandingan diff, compatibility check, security review, uji regresi, monitoring dan rollback, sesuai prosedur resmi.
Definisi selesai
Kode saja belum selesai. Harus ada acceptance test, pemeriksaan permission, isolation tenant bila berlaku, tidak ada kebocoran data, tes aksesibilitas, bukti hasil, dokumentasi dan persetujuan pemilik sesuai tingkat risiko. Referensi mengikat DoD V5.2 §19.
Larangan khusus
Jangan deploy diam-diam, restart service production, lakukan migrasi destructive, commit/push perubahan lain yang tidak terkait, atau menyatakan siap produksi berdasarkan satu skenario VoIP/finansial yang lolos.
09 ROADMAP DAN STATUS
09 — Roadmap, status dan keputusan berikutnya
9.1 Baseline nyata yang terbukti di penelusuran kode LAB
Model Program, Campaign, Transaction dan Distribution mempunyai relasi yang relevan; ada plugin program Braille/Zakat/Wakaf Umum/Donation serta plugin komunikasi/pembayaran dan kode modul Koperasi; ProgramPluginController memuat toggle business modules. Ini bukti keberadaan source, bukan sertifikat kerja normal, keamanan atau kesiapan SaaS.
9.2 Pekerjaan prioritas
P0 — Jangan rusak: jaga integritas transaksi lama, histori koreksi, role, data donor, dan worktree VoIP aktif; hentikan penyebaran informasi operasional sensitif di portal publik.
P1 — Konsolidasi: tetapkan PRD induk resmi setelah review, selesaikan konflik penomoran/status, audit semua fallback Braille, definisikan kontrak plugin vs modul dan tes program generik.
P2 — Fondasi SaaS: ADR control-plane, database-per-tenant, provisioning, module entitlement, scoped config/cache/jobs/storage, permission lintas tenant, BYOK.
P3 — Pilot terukur: uji UMV regression dan organisasi kedua dengan data terpisah; tes finansial dan aksesibilitas; tetapkan paket, billing serta SLA berdasarkan keputusan bisnis.
P4 — Ekspansi: white-label penuh, perluasan modul, otomatisasi onboarding dan observability sesuai bukti pilot.
9.3 Pertanyaan terbuka yang tidak boleh dijawab agent sendiri
Harga/kuota; modul core wajib; apakah setiap program perlu plugin atau plugin opsional; default yang aman bagi program baru; legacy UMV migration mapping; definisi cabang versus tenant; administrasi support lintas tenant; billing/penonaktifan paket; proses penghapusan data; nama dan versi kontrak API final.
9.4 Kriteria keberhasilan produk
Organisasi kedua bisa onboarding dan mengelola program tanpa fallback Braille, mempunyai database dan credential terpisah, memakai entitlement dan permission tepat, serta lulus alur keuangan, laporan dan aksesibilitas yang telah didefinisikan.
10 KONTRAK KERJA AGENT
10 — Kontrak kerja untuk AI Agent dan pengembang
Urutan baca wajib
- Panduan dan PRD induk revisi ini.
KEPUTUSAN_ARAH_SAKILA_2026_09_16.mduntuk 8 keputusan resmi pemilik.- Pasal detail PRD V5.2 sesuai tugas; V6 untuk arah masa depan.
AGENTS.md,SAKILA_MASTER_HANDOFF.md, evidence terbaru (tanggal, lingkungan, commit), dan source aktual.11_TRACEABILITY_DAN_KONFLIK.mdagar tidak ada bab lama tertinggal.
Klasifikasi setiap klaim
Tuliskan DECIDED, PROPOSED, SOURCE_OBSERVED, TESTED_LAB, VERIFIED_PRODUCTION, UNKNOWN dengan bukti. SOURCE_OBSERVED bukan TESTED_LAB.
Jika spesifikasi bertentangan
Jangan memilih dokumen berdasarkan nomor versi saja. Keputusan resmi identitas produk mengarahkan interpretasi; kewajiban detail finansial/privasi tetap berlaku sampai ada revisi eksplisit. Catat kedua sumber, dampak, opsi dan alasan berhenti; minta keputusan untuk konflik bisnis/finansial/hak akses/keamanan.
Pemisahan lingkungan
LAB boleh hanya sesuai scope otorisasi. Production tidak boleh disentuh tanpa persetujuan spesifik per operasi. Jangan print .env, secret, private key, identitas pribadi, atau isi transaksi nyata ke laporan.
Hasil minimum sebuah pekerjaan
Tujuan dan batas; daftar sumber bertanggal; daftar file diperiksa/diubah; diff; risiko kompatibilitas; tes dengan evidence; rollback; konflik; approval status. Jangan mengubah status di dokumentasi menjadi PASS tanpa bukti.
Kriteria gagal otomatis
Menjadikan UMV sebagai default seluruh tenant, menganggap program = modul, melewatkan security check tenant, merusak transaksi legacy, melewati approval bisnis, atau mengklaim siap rilis berdasarkan sekadar keberadaan kode.
11 TRACEABILITY DAN KONFLIK
11 — Matriks keterlacakan semua bab lama dan konflik dokumentasi
Fungsi: memastikan konsolidasi tidak menghilangkan substansi penting. Ini peta, bukan klaim bahwa seluruh isi setiap pasal lama sudah diverifikasi ulang baris demi baris.
Pemetaan PRD V5.2
| Bab lama | Isi pokok | Bab baru | Perlakuan |
|---|---|---|---|
| 00 | Source hierarchy/conflict | 10, 11 | Detail hierarki tetap baca sumber |
| 01 | Visi/misi | 01, 02 | Normalisasi agar lintas organisasi |
| 02 | Persona/role/super admin | 01, 05, 06 | Pertahankan matriks dan safety boundary |
| 03 | Financial model/state/adjustments | 05 | Detail V5.2 tetap normatif |
| 04 | Permission/audit | 05, 06 | Pertahankan matriks, tambah tenant scope target |
| 05 | PDP/retention | 06 | Jangan hilangkan privacy duty |
| 06 | Database/schema | 02, 04, 05 | Existing berbeda dengan target tenant DB |
| 07 | API | 06 | Tetap rujuk kontrak per endpoint |
| 08 | Acceptance | 05, 08 | Skenario detail wajib dipertahankan |
| 09 | UI/UX/accessibility | 07 | Per-release gate, bukan nanti |
| 10 | AI Safira | 06 | Permission-to-know tetap berlaku |
| 11 | 06 | Idempotency tetap berlaku | |
| 12 | Closed-loop impact | 01, 05, 09 | Generalisasi bukti dampak lintas program |
| 13.5 | ID card | 03, 07 | Modul opsional sesuai konteks |
| 14 | White label/tenant | 04 | Target, jangan klaim sudah tersedia |
| 15 | NFR | 06–08 | Tes dan ukuran perlu spesifik |
| 16 | Production safety gate | 08 | Prosedur lama tetap normatif |
| 17 | AI Agent rules | 10 | Aturan detail tetap berlaku |
| 18 | Roadmap/CR | 09–10 | Sesuaikan keputusan resmi |
| 19 | Definition of Done | 08 | Jangan samakan kode dengan siap produksi |
Pemetaan PRD V6
| Bab V6 | Domain baru | Catatan |
|---|---|---|
| 00–01 Ringkasan/identitas | 01–02 | Ubah framing contoh UMV menjadi produk lintas organisasi |
| 02 Backoffice ERP | 03, 05–06 | Status setiap modul jangan digeneralisasi |
| 03 Mobile | 03, 07 | Web dan mobile memakai API bersama |
| 04 Finansial/keamanan | 05–06 | Harmonisasi dengan detail V5.2 |
| 05 Infrastruktur | 04, 06, 08 | Pisahkan target dari deployed |
| 06 Roadmap | 09 | Sesuaikan tahapan dan pilot |
| 07 Status readiness | 09 | Harus didukung bukti aktual |
| 08 Kesimpulan audit | 09, 11 | Snapshot bertanggal, bukan PASS permanen |
| 09 Risiko/SOP | 06, 08–09 | Jadikan acceptance dan control |
Konflik / ketidakjelasan yang telah diamati
C-01 Prioritas tinggi: V5.2 dan V6 sama-sama memakai bahasa 'canonical'; keputusan pemilik menyatakan V5.2 baseline terperinci sekarang dan V6 arah masa depan. Jangan samakan kewenangan keduanya.
C-02 Tinggi: Label bagian roadmap status memakai angka lama (misalnya DoD disebut 18 di STATUS_BAB_PRD.md, padahal V5.2 aktual §19). Perbarui rujukan ketika sinkronisasi disetujui.
C-03 Tinggi: V6 menjelaskan ERP umum tetapi contoh dan identitas lembaga UMV dominan; bedakan visi platform dan studi kasus operasional.
C-04 Tinggi: Source LAB masih fallback braille_waqf pada pembuatan program, model, notifikasi dan dokumen transaksi. Rencanakan compatibility migration, jangan replace mendadak.
C-05 Tinggi: SaaS database-per-tenant, entitlement per tenant, dan billing merupakan keputusan target; bukti implementasi belum ditemukan dalam audit source terbatas.
C-06 Sedang: Setting::isModuleEnabled menunjukkan toggle aplikasi, belum menjadi bukti entitlement per tenant.
C-07 Tinggi: AGENTS.md memiliki instruksi dan detail server production; tidak tepat disajikan sebagai prosedur LAB universal atau portal publik terbuka.
C-08 Sedang: Laporan status bab dan handoff bersifat snapshot; hasil tes harus disertai versi kode, tanggal dan scope.
C-09 Tinggi: Alur penjualan SaaS perlu definisi harga, tenant registration, billing, suspended state dan kebijakan perpanjangan yang belum diputuskan.
Kebijakan penutupan konflik
Tutup hanya dengan: keputusan pemilik/ADR, patch dokumentasi terkontrol, uji relevan, sumber bukti, tanggal, dan reviewer. Jangan menghapus temuan hanya karena kalimat PRD sudah diubah.
12 PROTOKOL ADOPSI DAN VALIDASI
12 — Cara menerapkan revisi tanpa merusak LAB
Kondisi saat penulisan: dokumen asli LAB belum ditimpa. Git LAB mempunyai perubahan aktif termasuk area VoIP; perlakukan worktree sebagai area yang dilindungi.
Urutan adopsi yang aman
- Pemilik membaca HTML, mengoreksi identitas produk/keputusan bisnis, dan menyetujui atau menolak revisi.
- Pengembang membandingkan seluruh subbab PRD V5.2/V6 dengan matriks keterlacakan, merekam requirement yang tidak tercakup.
- Buat branch/worktree dokumentasi terpisah dari pengembangan aktif, simpan salinan/commit SHA file sumber.
- Tambahkan indeks dan dokumen baru tanpa menimpa sumber lama pada tahap pertama; tautkan arsip sebagai referensi.
- Jalankan review domain finansial, keamanan, API, mobile/VoIP, dan aksesibilitas oleh pemilik teknis.
- Perbarui status dengan bukti tes aktual, bukan klaim generik PASS.
- Setelah review resmi, tetapkan satu entry point agent; tandai dokumen lama
historical/referencetanpa menghapusnya. - Deployment dokumentasi HTML mengikuti filter informasi publik vs internal.
Checklist sign-off
- Identitas dan istilah disetujui pemilik.
- Tidak ada kewajiban finansial/permission/privacy yang hilang.
- Mapping setiap bab V5.2 dan V6 telah diperiksa reviewer.
- Kondisi LAB / production dibedakan.
- Tidak ada secret atau host operasional dalam versi HTML publik.
- Dokumen dapat diakses dengan NVDA/JAWS.
- Agent entry point ditetapkan, dan keputusan di luar cakupan tidak diambil agent sendiri.
Aturan akhir: DRAF ini dapat dipakai untuk review dan perencanaan. Ia baru menjadi spesifikasi implementasi baru setelah disetujui dan diberi versi kanonis resmi.
13 TAHAP29 KONSOLIDASI TEMUAN
Tahap 29 — Konsolidasi hasil audit dan backlog keputusan
Status: selesai untuk konsolidasi bukti yang tersedia; audit terhadap setiap baris PRD warisan masih butuh sign-off review khusus. Urutan temuan berdasarkan dampak data/dana, bukan kronologi nomor audit.
A. P0 — Integritas keuangan dan pemisahan tugas
| ID | Kondisi/temuan | Bukti | Klasifikasi | Tindakan |
|---|---|---|---|---|
| FIN-01 | employee dapat mengubah program dan status transaksi verified lewat PUT /wakaf/{id} dengan semua middleware aktif |
Sandbox tahap 24: program_id 1→2; status verified→adjusted, nominal Rp100.000 tetap |
SANDBOX_TESTED, gagal kontrak keamanan | Blok edit transaksi final melalui endpoint web umum; sediakan workflow koreksi terpisah |
| FIN-02 | finance_manager dapat menyetujui draft yang dibuatnya sendiri |
Sandbox tahap 27: HTTP 200; draft→approved | SANDBOX_TESTED, gagal SoD | Tolak jika creator_id==approver_id sebelum idempotency; lakukan pada service/domain |
| FIN-03 | Model membedakan raw amount dan current_amount, tetapi accessor menggunakan fallback saat current=0 |
Sandbox tahap 18; source model | SANDBOX_TESTED | Tetapkan nilai 0 sebagai valid/terlarang pada kontrak domain; beri tes semua jalur dan agregasi |
| FIN-04 | Pelaporan mencampur SQL sum(amount) dan sum(current_amount) |
Source WakafReportService, LandingPageController, Transaction::totalCollected |
SOURCE_OBSERVED | Definisikan metrik sumber, berlaku untuk organisasi/program/campaign; uji rekonsiliasi |
| FIN-05 | Web mengaplikasikan adjustment saat update; mobile draft→approve→apply |
Source controller dan sandbox | SOURCE_OBSERVED + sebagian SANDBOX_TESTED | Satukan ke service transactional dengan workflow SoD, audit immutable, row lock |
| FIN-06 | Web memanggil lockForUpdate() sebelum beginTransaction() |
Source DonationController | SOURCE_OBSERVED | Pindahkan lock ke dalam DB::transaction, uji concurrency |
| FIN-07 | Approval dan apply API memiliki tuntutan role/permission berbeda; super_admin bypass approve tetapi apply khusus finance_manager | Source routes/api.php, MobileWakafAdminController | SOURCE_OBSERVED | Selaraskan matriks entitlements/permission/role, desain emergency workflow lengkap |
| FIN-08 | AuditTrail menangkap kesalahan log dan melanjutkan transaksi | Source AuditTrail | SOURCE_OBSERVED | Tentukan audit kritis wajib atomic/durable vs log observability opsional |
B. P0/P1 — Domain produk dan SaaS
| ID | Temuan | Status | Tindakan |
|---|---|---|---|
| DOM-01 | Fallback braille_waqf pada sejumlah jalur program |
SOURCE_OBSERVED | Program baru umum tidak boleh otomatis Braille; jaga data warisan |
| DOM-02 | Belum terbukti tenant_id/organization_id pada migrasi yang ditelusuri |
SOURCE_OBSERVED terbatas | Desain control-plane dan database per tenant, jangan mengklaim siap multi-tenant |
| DOM-03 | Setting modul serta plugin bercampur | SOURCE_OBSERVED | Pisahkan jenis program, perangkat lunak modul, entitlement tenant, izin individu |
| DOM-04 | V5.2 dan V6 sama-sama bertuliskan kanonis; status map/penomoran tidak konsisten | Audit dokumentasi | Satu indeks PRD induk disetujui, sumber lama diarsip tanpa dihapus |
| DOM-05 | Total organisasi pernah tercampur perolehan program/campaign | Temuan audit laporan | Definisi metrik per tingkat organisasi-program-campaign dengan filter status |
C. Bukti sandbox yang tidak boleh dilebih-lebihkan
- Tahap 17: HTTP
/upmengembalikan 200 pada Laravel terisolasi. - Tahap 18: 3 tes model/7 assertion PASS dalam fixture minimal.
- Tahap 19: akses anonim web 302, mobile 401; bukti autentikasi, bukan matriks izin lengkap.
- Tahap 22: Gate
manage_wakafmemberi akses padaemployee,finance_staff,finance_manager. - Tahap 24: tes negatif mengungkap mutasi tanpa kewenangan.
- Tahap 25: prototipe pengaman di sandbox: 5 tes/12 assertion PASS (memblokir edit transaksi final web umum).
- Tahap 27: self-approval sebelum patch sukses; sesudah patch ditolak, approver lain sukses.
- Tahap 28: 5 tes/16 assertion PASS pada controller secara langsung; middleware API dan audit trail durable belum dibuktikan.
- Semua patch hanya di salinan
/tmp/sakila_phpunit_sandbox_20261011, bukan source LAB aktif/production.
D. Kebijakan prioritas engineering
P0: FIN-01/02/05/07 (otorisasi dan SoD); cegah editing data final, selaraskan workflow, audit dan rollback sebelum rilis. P1: FIN-03/04/06/08, DOM-01/05 serta kontrak data dan laporan. P2: DOM-02/03/04, mekanisme SaaS tenant/entitlement dan white-label sesuai roadmap; keamanan lintas tenant tetap release blocker jika fitur tenant akan dirilis.
Tidak ada perbaikan di atas yang dianggap terselesaikan pada source aktif. Tes sandbox yang PASS adalah bukti prototipe, bukan izin deploy.
14 TAHAP30 KONTRAK ACCEPTANCE
Tahap 30 — Kontrak PRD dan matriks acceptance
Status: rumusan kandidat PRD. Setiap kata WAJIB adalah kriteria penerimaan usulan yang harus direview pemilik domain/teknis sebelum ditetapkan kanonis. Ini memperjelas baseline V5.2, bukan mencabut aturan rincinya.
1. Organisasi, program, campaign dan modul
- SAAS-01: Organisasi diprovisioning ke database khusus tenant secara idempotent, dengan backup, restore, tenant resolution dan isolasi cache/job/media/log; tidak boleh ada query silang tenant tanpa otorisasi dukungan terpisah.
- SAAS-02: Unit/cabang berada di bawah organisasi kecuali ada keputusan onboarding tenant baru.
- SAAS-03: Modul perangkat lunak, plugin jenis program, subscription entitlement dan role/permission disimpan serta dievaluasi sebagai konsep berbeda. Aksi memerlukan keempat kondisi yang relevan (termasuk tenant context), bukan sekadar menu tersembunyi.
- PROG-01: Program baru non-UMV dapat dibuat tanpa
braille_waqf; program UMV historis tetap terbaca dengan pemetaan kompatibilitas yang tervalidasi. - PROG-02: Campaign melekat pada program bila relevan. Pencapaian campaign ≠ seluruh perolehan program ≠ perolehan organisasi.
- BIZ-01: Freemium, layanan premium, BYOK dan white-label mengikuti keputusan pemilik; SAKILA tidak mengambil persentase donasi. Harga/kuota/SLA masih memerlukan keputusan produk.
2. Keuangan — kontrak perilaku server
- FIN-01:
amountraw/original transaksi terverifikasi tidak dapat berubah. Koreksi menulis riwayat adjustment yang immutable dan current_amount sesuai definisi; operasi satu transaksi atomik. - FIN-02: Endpoint web edit umum tidak boleh mengubah program, akun, status, nominal, atau metadata kritis dari transaksi
paid|verified|adjusted. Koreksi berhak harus lewat prosedur khusus, bukanPUT /wakaf/{id}biasa. - FIN-03: State adjustment:
draft → approved → applied, serta penolakan yang sah; state ilegal dan replay harus ditolak tanpa perubahan data. HTTP boleh disesuaikan kontrak API, tetapi kegagalan harus dapat diamati. - FIN-04: Pembuat draft tidak boleh menyetujui draftnya sendiri; nilai pembuat dan approver diverifikasi terhadap user autentik, bukan request payload. Penyelarasannya juga berlaku pada klaim idempotent.
- FIN-05: Persetujuan harus diwajibkan aktor berbeda dan memiliki izin yang tepat; apply tidak dapat dilakukan sebelum approval; audit approval menyebut siapa, kapan, alasan, before/after.
- FIN-06: Bypass darurat super admin harus mempunyai permintaan, persetujuan pihak kedua yang independen, TTL maksimal 60 menit sesuai baseline, one-time consume dan jejak audit; approval/apply harus konsisten. Tidak boleh menganggap
super_admindapat melewati segala SoD. - FIN-07: Lock transaksional dan idempotency key mencegah duplicate/retry serta race condition. Laporan konsisten terhadap suatu definisi finansial, tanpa salah memaknai nilai accessor saat SQL
SUM. - FIN-08: Definisi nominal 0, refund, status terhitung, ledger dan cash closing harus diputuskan eksplisit dan diuji dengan skenario numerik batas.
- FIN-09: Perolehan publik harus bisa dilacak: per transaksi → campaign → program → organisasi; aggregate tidak mengambil nilai keseluruhan ketika filter program diminta.
3. Keamanan, operasional dan aksesibilitas
- SEC-01: Auth, role, permission objek, entitlement dan tenant context berlaku di backend semua kanal; negative test membuktikan tidak ada side effect database.
- SEC-02: Webhook integrasi memverifikasi signature dan idempotency, credential BYOK scoped tenant serta tidak muncul di log/artifact.
- SEC-03: PII donor/penerima manfaat dibatasi, diaudit dan memiliki kebijakan retensi; kasus izin ditolak tidak membeberkan isi data.
- ACC-01: Semua alur kritis dapat diselesaikan memakai keyboard dengan NVDA/JAWS dan TalkBack/VoiceOver sesuai kanal; status, label, dialog, fokus dan galat semantik wajib diverifikasi.
- OPS-01: Deployment menuntut uji regresi, backup-restore, rollback, review diff, approval manusia, observability dan tidak ada akses production berdasarkan keberhasilan tes sandbox.
4. Matriks minimum uji finansial
| ID tes | Aktor, prasyarat, aksi | Outcome wajib | Bukti |
|---|---|---|---|
| QA-01 | employee, verified, PUT web ganti program/status |
403/penolakan eksplisit; raw DB identik; audit denial | HTTP + SQL before/after |
| QA-02 | finance_staff, verified, ganti nominal melalui web umum |
Ditolak; transaksi dan saldo tak berubah | HTTP + SQL |
| QA-03 | pembuat=approver, draft, approve | Ditolak; tetap draft; audit denial | auth+SQL+audit |
| QA-04 | manajer berbeda, draft, approve | approved dengan approver ID yang benar | auth+SQL+audit |
| QA-05 | finance_staff, draft, apply | Ditolak, tanpa side effects | API+SQL |
| QA-06 | finance_manager, draft, apply tanpa approve | Ditolak; nominal tetap | API+SQL |
| QA-07 | finance_manager, approved, apply | applied sekali, original tetap, current berubah, ledger konsisten | API+SQL+audit |
| QA-08 | retry applied | Ditolak/response idempotent sesuai kontrak, tanpa penerapan ulang | API+SQL |
| QA-09 | super_admin tanpa bypass live, approve/apply | Ditolak | API+audit |
| QA-10 | super_admin bypass dengan dua aktor, TTL, consume | Sesuai definisi resmi; tak bisa digunakan kembali | API+audit+clock fake |
| QA-11 | dua request serentak atas adjustment sama | Tidak double apply, saldo tidak dobel | concurrency test |
| QA-12 | current=0, refund, nilai negatif, perbedaan agregat | Cocok dengan definisi disetujui | SQL+report+API |
| QA-13 | donor A/campaign A/program A vs agregat organisasi | Filter benar pada web, mobile, publik, laporan | fixture lintas campaign |
| QA-14 | tenant A mencoba akses tenant B | Tidak boleh baca/tulis/list data B | API+DB tenant |
| QA-15 | keyboard/screen reader membuat draft dan menyetujui | Seluruh informasi dan konfirmasi dapat diakses | uji NVDA/JAWS/mobile |
5. Gerbang rilis
Semua QA P0 harus PASS dalam suite integrasi yang menjalankan middleware API dan aplikasi sesuai deployment target. Audit AuditTrail yang gagal diam-diam tidak boleh dianggap memenuhi persyaratan jejak finansial bila audit tersebut wajib. Data sintetis wajib dipakai di sandbox; uji pada LAB nyata hanya setelah isolation gate jelas, dengan otorisasi dan backup; production terpisah membutuhkan approval operasi spesifik.
15 TAHAP31 HANDOFF SIGNOFF
Tahap 31 — Validasi editorial, serah terima dan sign-off
Status akhir yang akurat
Tahap 29–31 penyusunan paket selesai; paket PRD Candidate 2.0 siap review pemilik/engineering, belum otomatis menjadi dokumen kanonis, belum diadopsi di LAB, dan belum dibuktikan seluruhnya terhadap source serta seluruh requirement V5.2/V6. Tidak ada perbaikan source aktif dalam paket ini.
Checklist validasi editorial (dilakukan untuk paket ini)
- Membedakan platform, organisasi, unit, program, campaign, modul, plugin, entitlement, permission.
- Mengklasifikasikan V5.2 baseline, V6 roadmap, keputusan pemilik 16 Sep sebagai arah bisnis.
- Memisahkan SOURCE_OBSERVED dari SANDBOX_TESTED serta risiko dari bukti eksploitasi.
- Menautkan backlog temuan keamanan P0 dengan acceptance test positif/negatif dan before/after database.
- Menjaga source LAB/production tetap tidak disentuh selama pembuatan dokumen.
- Menyediakan HTML semantik dan berkas Markdown untuk pembaca layar.
- Menyamakan setiap subpasal V5.2/V6/keputusan asli satu-per-satu dengan reviewer manusia.
- Sign-off domain keuangan, privasi, keamanan, aksesibilitas dan arsitektur tenant.
- Pemilik menyetujui PRD Candidate 2.0 sebagai kanonis beserta status keputusan terbuka.
Keputusan yang masih terbuka
- Peran mana selain finance_manager yang boleh mengajukan, menyetujui dan menerapkan tiap jenis koreksi? Tentukan matriks per aksi dan kanal; hindari kebijakan berbeda antara route dan controller.
- Apakah
paidwajib melalui prosedur final sama sepertiverified? Rekomendasi sementara: ya, kecuali kebijakan tertulis berbeda. - Apakah nol boleh sebagai active amount pascapenyesuaian? Kebijakan sementara mobile: tidak. Tetapkan alur pembatalan/refund terpisah.
- Apa definisi nominal yang dipakai tiap metrik, termasuk refund, fee, cash closing dan kampanye?
- Apakah kegagalan audit ledger wajib membatalkan transaksi? Rekomendasi: audit finansial kritis harus durable/transactional.
- Bagaimana finance_manager dan super_admin membagi tahap apply/bypass dengan akuntabilitas pihak kedua?
- Modul core wajib, harga/kuota freemium, SLA, retensi data, protokol cabang dan support lintas tenant.
- Pemetaan
braille_waqfbagi program lama saat migrasi tenant; tidak boleh otomatis diterapkan pada organisasi lain.
Instruksi eksekusi untuk AI Agent setelah sign-off
- Baca
00_README_MULAI_DI_SINI.md, keputusan owner, V5.2 pasal terkait, V6 roadmap,AGENTS.md, kemudian backlog+acceptance. - Konfirmasi scope: tugas PRD/editorial atau perubahan kode? Berkas produksi tidak tersentuh bila tidak ada instruksi deploy eksplisit.
- Tentukan baseline commit/dirty state dan dokumentasikan snapshot file; jangan menimpa perubahan agen VoIP atau pekerjaan lain.
- Buat branch/worktree terpisah, mulai dari tes regresi merah yang diturunkan dari QA-01/03; baru lakukan refactor policy/service secara sempit.
- Jangan sekadar menambal
abort(403)sebagai solusi final: rancang jalur koreksi berwenang, policy berbasis kemampuan, dan pemisahan pemohon–penyetuju–pelaksana sesuai keputusan. - Jalankan suite middleware web/API, SoD dan concurrency; verifikasi nilai raw DB, saldo, audit, laporan serta klien mobile. Laporkan FAIL, bukan memperlunak assertion.
- UAT dengan pengguna dan screen reader, dokumentasikan regression dan bukti rollback.
- Handover ke reviewer dengan diff, bukti tes, status fitur, risiko residual, keputusan serta persetujuan; production tetap membutuhkan safety gate terpisah.
Status tiga tahap
| Tahap | Deliverable | Penyelesaian |
|---|---|---|
| 29 | Prioritas temuan, pemisahan bukti dan backlog | Selesai disusun |
| 30 | Requirement normatif kandidat dan 15 skenario uji penerimaan | Selesai disusun |
| 31 | Paket PRD terindeks, HTML aksesibel, handoff dan checklist sign-off | Selesai disusun; sign-off masih tertunda |
Artefak sumber acuan
/var/www/dev/docs/KEPUTUSAN_ARAH_SAKILA_2026_09_16.md: keputusan pemilik./var/www/dev/docs/PRD_SAKILA.md: baseline detail V5.2./var/www/dev/docs/PRD_SAKILA_ENTERPRISE_ECOSYSTEM.md: V6 arah enterprise./var/www/dev/AGENTS.md,/var/www/dev/docs/SAKILA_MASTER_HANDOFF.md: konteks implementasi, bukan pengganti PRD.- Audit tahap 24, 25, 27, 28: bukti sandbox terpenting; gunakan log/run fixture saat melakukan verifikasi ulang.
16 PENETAPAN BASELINE AUDIT
16 — Penetapan baseline audit dan aturan prioritas
Identitas: SAKILA ERP SaaS lintas organisasi. UMV adalah contoh organisasi; wakaf Al-Qur'an Braille merupakan program UMV, bukan inti produk dan bukan pilihan bawaan setiap tenant.
Status tegas dokumen
AUDIT-READY: YA. Paket v2.1 ini merupakan baseline pemeriksaan yang dapat langsung dipakai untuk gap assessment, review desain, penulisan tes, estimasi, dan engineering di sandbox/branch terisolasi. Untuk setiap perbedaan implementasi dengan requirement, keluarkan temuan serta bukti, bukan mengubah requirement diam-diam.
BUILD-READY: YA, TERBATAS untuk komponen dengan requirement dan acceptance telah lengkap, dengan perubahan terisolasi, tes regresi, dan review diff. PRODUCTION-DEPLOY-READY: TIDAK. Persetujuan pemilik untuk dokumen bukan otomatis izin operasi produksi.
Urutan kewenangan bila ada konflik
- Keputusan tertulis pemilik 16 September 2026 untuk arah bisnis dan identitas platform.
- Baseline V5.2 untuk aturan operasional/finansial/privacy/security terperinci yang tidak ditimpa keputusan baru secara eksplisit.
- Paket v2.1 untuk terminologi SaaS, penggolongan temuan, kontrak uji penerimaan dan status kesiapan audit.
- V6 enterprise untuk roadmap kemampuan masa depan, bukan sebagai bukti bahwa fitur sudah dideploy.
- Source code dan AGENTS.md sebagai bukti implementasi saat ini, bukan otomatis kebijakan bisnis kanonis.
Aturan konflik: Bila paket v2.1 berbeda dari V5.2 pada fakta finansial atau kewajiban hukum, gunakan aturan yang lebih aman sambil mencatat ADR/permintaan keputusan. Tidak ada penghapusan kewajiban PRD lama dengan alasan “ringkasan baru”.
Pelaksanaan audit langsung
- Inventaris requirement memakai
MATRIKS_REQUIREMENT.csvdan14_TAHAP30_KONTRAK_ACCEPTANCE.md. - Per requirement tandai
implemented / partial / missing / conflicting / unverifiedserta bukti kode, tes, commit, tanggal dan risiko. - Untuk kontrol P0 gunakan tes negatif dan perbandingan isi database sebelum/sesudah. Tidak boleh mengklaim PASS dari pencarian string source.
- Pertahankan model domain
tenant → organisasi → program → campaignsesuai aturan bahwa cabang/unit tidak otomatis menjadi tenant. Modul dan plugin tidak identik dengan program. - Selesaikan kesenjangan sebelum penerimaan rilis melalui gerbang di dokumen 18.
17 KEPUTUSAN IMPLEMENTASI DAN ADR
17 — Keputusan operasional yang dapat dipakai Agent
Ditetapkan sebagai kebijakan aman untuk desain dan pengujian (tidak mengubah production)
| ID | Kebijakan kerja v2.1 | Konsekuensi untuk pengembang |
|---|---|---|
| D-01 | Transaksi paid, verified dan adjusted diperlakukan final untuk endpoint edit umum |
Web/mobile edit biasa tidak boleh memutasi program, rekening, status, nominal atau metadata kritis; gunakan workflow koreksi tersendiri |
| D-02 | amount adalah nilai historis asli immutable pasca-final, current_amount nilai aktif yang diturunkan dari ledger koreksi |
Model, SQL agregasi, laporan, kuitansi dan saldo harus direkonsiliasi |
| D-03 | Pembuat draft tidak dapat menyetujui sendiri, termasuk respons idempotent; penerap tidak dapat melewati approval yang sah | Periksa identitas server-side dan state secara atomik |
| D-04 | Super admin tidak memperoleh hak mengesampingkan separation-of-duties secara otomatis | Bypass perlu aktor kedua independen, TTL maksimal 60 menit, sekali pakai dan audit |
| D-05 | Nominal aktif nol/negatif tidak boleh dimasukkan melalui koreksi biasa | Refund, pembatalan dan write-off harus menjadi alur terpisah sampai kontrak akuntansi khusus disahkan |
| D-06 | Data perolehan campaign hanya transaksi yang berkaitan dengan campaign tersebut | Program ≠ campaign ≠ keseluruhan organisasi; agregat harus eksplisit |
| D-07 | Audit finansial kritis harus durable dan transaksional atau memiliki mekanisme outbox terjamin | Kegagalan pencatatan audit tidak boleh secara diam-diam dianggap transaksi patuh |
| D-08 | Database terpisah per tenant adalah target arsitektur SaaS | Semua layanan pendukung (cache, queue, media, backup, BYOK, entitlement) wajib mengikuti batas tenant |
| D-09 | Program baru harus bersifat generik | braille_waqf tidak dijadikan default bagi organisasi baru; data UMV lama tetap memerlukan jalur kompatibilitas |
| D-10 | Endpoint web dan mobile mengikuti satu policy/domain service untuk aksi yang sama | Tidak boleh ada jalur web immediate-apply yang melewati maker-checker mobile |
| D-11 | Tidak ada pengembangan baru yang menimpa dirty worktree atau source operasional | Gunakan branch/worktree terisolasi, diff review, regression suite dan approval sebelum merge |
| D-12 | Aksesibilitas NVDA/JAWS dan teknologi bantu mobile adalah acceptance gate | Pengujian keyboard, fokus, label, validasi dan status wajib; bukan enhancement opsional |
Klasifikasi: D-01 sampai D-12 adalah baseline engineering konservatif untuk audit dan penyusunan solusi. Keputusan hukum, akuntansi, tarif, dan produksi hanya sah bila disetujui pemilik yang berwenang; Agent tidak boleh mengklaim persetujuan pengguna yang tidak pernah diberikan.
Hal yang belum dapat dikunci tanpa otoritas bisnis dan data sebenarnya
| ID | Hal yang diperlukan | Default aman selama belum diputuskan |
|---|---|---|
| ADR-01 | Harga paket, kuota, free-tier, SLA, billing provider | Tidak aktifkan tagihan publik atau penonaktifan tenant otomatis |
| ADR-02 | Pemilihan control-plane, identitas tenant, strategi domain/subdomain, migrasi basis data UMV | Implementasi sebagai desain/prototipe; tidak lakukan migrasi data nyata |
| ADR-03 | Pengakuan pendapatan, refund, fee, posting jurnal dan cash closing | Jangan mengubah ledger lama; tunjukkan simulasi dan selisih rekonsiliasi |
| ADR-04 | Jadwal retensi/penghapusan data dan peran pengendali/prosesor data | Jangan hard-delete arsip keuangan atau data pribadi tanpa kebijakan sah |
| ADR-05 | Role yang berhak apply dan rancangan emergency bypass end-to-end | Wajib maker-checker independen; tidak buka jalur super admin umum |
| ADR-06 | Data historis UMV dan pemetaan program/plugin | Jangan migrasikan otomatis atau memasang modul Braille pada tenant lain |
Batasnya tegas: ADR terbuka tidak menghalangi audit, tetapi menghalangi aktivasi fitur terkait pada rilis nyata. Agent membuat usulan ADR dengan opsi, risiko, tes, dan dampak migrasi; bukan menebak jawaban pemilik.
18 GERBANG GO NO GO DEPLOY
18 — Gerbang GO / NO-GO audit, development, LAB dan production
Keputusan tahap sekarang
| Aktivitas | Keputusan per 11 Oktober 2026 | Alasan |
|---|---|---|
| Audit source code berdasarkan PRD | GO | Paket ini cukup untuk matriks gap dan acceptance |
| Tulis tes otomatis dengan data sintetis | GO | Hanya sandbox terisolasi dan tanpa kredensial nyata |
| Patch/refactor pada branch baru yang terisolasi | GO bersyarat | Punya diff, review, rollback dan tes yang mengikat |
| Merge ke source LAB operasional | NO-GO sekarang | Temuan P0 perlu uji end-to-end dan persetujuan perubahan |
| Deploy SaaS multi-tenant ke publik | NO-GO sekarang | Tenant isolation, migrasi, billing, privasi, dan acceptance belum terbukti |
| Deploy atau ubah production UMV | NO-GO sekarang | Tidak ada perintah deploy spesifik atau bukti gate rilis |
Gerbang mandatory untuk naik kelas
- Requirement sign-off: cakupan bisnis, aktor, batas tenant, metrik akuntansi, audit dan privacy diputuskan pada ADR relevan.
- Rekonsiliasi: setiap aturan material V5.2/V6 dipetakan ke requirement final; konflik direkam, diselesaikan, dan reviewer menerima hasilnya.
- Security P0: uji
employeemengganti transaksi final gagal tanpa mutasi; maker-checker gagal untuk self-approval dan berhasil untuk dua aktor sah; bypass darurat valid lengkap; web/mobile selaras. - Data: rekonsiliasi nominal original/current, ledger, akun, program dan campaign; tes concurrency/idempotency dan event jobs.
- Tenant: dua organisasi sintetis dengan koneksi terpisah; tidak ada kebocoran query, cache, file, queue, log, backup atau BYOK.
- Quality: seluruh tes P0/P1 dan UI keyboard/screen reader PASS; tidak ada regresi terhadap modul yang dipakai.
- Operations: snapshot backup diuji restore, rencana cutover/rollback, monitoring, reviewer, pemilik perubahan dan otorisasi target lingkungan.
GO production baru boleh dinyatakan berdasarkan bukti di lingkungan target dan persetujuan deploy tersendiri. Lulus PHPUnit di SQLite saja bukan GO production.
Daftar pekerjaan yang masih diperlukan sebelum ada GO production
- P0: perbaiki endpoint web transaksi final dan SoD; sinkronkan permission route/controller; uji bypass.
- P0: rekonsiliasi
sum(amount)vssum(current_amount)dan audit ledger. - P0: selesaikan tenant boundary server-side dan isolasi resource sebelum onboarding tenant kedua nyata.
- P1: selesaikan kontrak migrasi program generik dan legacy UMV; adopsi rute dan konfigurasi modul scoped tenant.
- P1: verifikasi backup/rollback, privacy, aksesibilitas, dan integrasi pihak ketiga.
19 PAKET KERJA AGENT AUDIT
19 — Prompt penugasan mandiri untuk AI Agent
Mandat
Audit implementasi SAKILA terhadap baseline PRD v2.1. SAKILA adalah ERP SaaS lintas organisasi, bukan sistem yang berpusat pada program wakaf Braille UMV.
- Baca
16_PENETAPAN_BASELINE_AUDIT.md,17_KEPUTUSAN_IMPLEMENTASI_DAN_ADR.md,18_GERBANG_GO_NO_GO_DEPLOY.md,14_TAHAP30_KONTRAK_ACCEPTANCE.md, danMATRIKS_REQUIREMENT.csv. Baca juga keputusan pemilik 16 Sep, PRD V5.2 dan V6 lengkap. - Inspeksi source read-only; catat lokasi, commit, status dirty dan test fixture. Jangan menimpa file operasional, secrets, VoIP worktree atau database yang ada.
- Hasilkan tabel requirement → evidence → status (implemented/partial/missing/conflicting/unverified) → severity → acceptance test → owner → tindakan.
- Untuk setiap P0, buat tes negatif di sandbox sintetis; verifikasi HTTP dan database before/after, ledger, audit, serta tenant boundary.
- Pisahkan fakta source, bukti tes, hipotesis, dan keputusan pemilik. Jangan melemahkan tes agar PASS.
- Keluarkan rekomendasi per komponen: reuse, refactor, rewrite isolated component, atau new SaaS foundation; jelaskan migration/rollback.
- Jangan menjalankan deploy, merge, migrasi produksi, atau mengubah database nyata tanpa mandat eksplisit dan gate di dokumen 18.
Deliverable audit tunggal
SAKILA_GAP_ASSESSMENT.md, SAKILA_SECURITY_P0.md, SAKILA_MODERNIZATION_PLAN.md, SAKILA_TEST_EVIDENCE.md, dan SAKILA_ADR_DECISIONS_REQUIRED.md. Semua menyebut versi sumber, tanggal dan lingkungan. Ketidakpastian dinyatakan, bukan disembunyikan.