MASA by LabMu · Project Maverick · 06-Handoff

Acceptance Criteria

Checklist per fitur per wave yang harus dipenuhi sebelum fitur dianggap "selesai" dan siap release. Digunakan oleh QA Engineer, Flutter dev, dan PM untuk verifikasi tiap screen.

Fitur 20 fitur
Waves 0–5
Kriteria kritis ⬛ P0 — stop release jika gagal
Kriteria utama ◼ P1 — harus pass sebelum merge
Kriteria minor □ P2/P3 — best effort

§1Cara membaca dokumen ini

Tiga jenis kriteria:
CRIT (P0) — Stop release jika gagal. Biasanya: bug yang menghilangkan uang user, trust breakdown, crash.
MUST (P1) — Harus pass sebelum merge ke main. UX flow, state coverage, copy.
SHOULD (P2/P3) — Best effort. Animasi halus, edge case, polishing.
Aturan release:
(1) Tidak boleh ada ⬛ CRIT yang open saat release.
(2) Minimal 90% dari ◼ MUST harus pass sebelum merge.
(3) □ SHOULD boleh masuk ke backlog sprint berikutnya.

§2Universal Checklist — berlaku untuk SEMUA fitur

Checklist Universal — setiap fitur WAJIB memenuhi ini
Design System Compliance
  • Semua warna dari token MASA DS v2.0
  • Typography hanya Inter (UI) / Newsreader (hero)
  • Spacing divisibel 4px
  • Touch target minimum 44×44px
  • Border radius dari 6 tier yang didefinisikan
  • Elevation dari 5 level yang didefinisikan
State Coverage
  • Loading state (skeleton / spinner)
  • Empty state (bukan blank)
  • Error state + pesan human-readable
  • Offline state jika fitur butuh network
  • Success state dengan feedback jelas
  • Disabled state jika ada form
Voice & Copy
  • Copy sesuai Voice & Tone Guide v1
  • Error messages tidak berbunyi teknis
  • CTA button menggunakan verb + object
  • Tidak ada kata terlarang (bahasa terlarang list)
  • Copy terlokalisasi (id.json)
  • Tidak ada placeholder text yang terpakai
Accessibility
  • Contrast ratio teks ≥4.5:1 (WCAG AA)
  • Semua button/icon punya semanticLabel
  • Dynamic text support (font scale)
  • Screen reader bisa navigate linear
  • Tidak ada informasi yang hanya via warna
  • Form field punya label yang benar
Analytics
  • Event dari Analytics Spec sudah di-log
  • User segment property dikirim jika relevan
  • Payment events dari server-side
  • Funnel step di-track dengan benar
Performance
  • First meaningful paint ≤2s (4G)
  • Scroll smooth ≥60fps
  • Image lazy-loaded
  • Tidak ada memory leak pada dispose
  • API call di-cancel saat widget dispose

Wave 0 — Bug Kill

Tiga bug kritis yang harus selesai sebelum wave lain dimulai. Tidak ada negosiasi.

W0-01
Iuran KTAM — VA Bug Fix
Fix P0
3 screens

Acceptance Criteria

  • VA error TIDAK lagi menyebabkan blank screen — user selalu melihat pesan + opsi recovery
  • Saat VA gagal, fallback QRIS langsung muncul sebagai opsi utama
  • Payment success rate ≥95% (diukur via iuran_payment_success event)
  • Error message menggunakan copy dari Voice Guide: "Nomor rekening belum bisa dibuat sekarang. Coba QRIS."
  • Retry button berfungsi dan mencoba generate VA baru
  • Transfer manual tersedia sebagai fallback terakhir
  • Breakdown "dipakai untuk dakwah/kaderisasi/AUM" tampil di halaman konfirmasi
  • Kuitansi tersedia di Profil > Riwayat setelah payment sukses
  • iuran_va_error event di-log dengan error_code + fallback_shown property

Success Metrics

Payment success rate≥95%was ~60-70% (estimated)
VA error rate≤5%P0 alert if exceeded
Fallback usage≥70% of errorsuser recovers via QRIS
Support tickets (iuran)Target: 0post-release
Events: iuran_va_error · iuran_payment_success
W0-02
Notifikasi — Bug Fix + Per-Kategori
Fix P0
2 screens

Acceptance Criteria

  • Toggle notifikasi yang di-OFF benar-benar menghentikan notifikasi — tidak ada notif yang lewat
  • Toggle per kategori (adzan / sedekah / iuran / event) berfungsi independen
  • Permission primer tampil SEBELUM OS dialog — bukan langsung OS dialog
  • Primer menggunakan copy: "Aktifkan notifikasi agar kami bisa mengingatkan waktu sholat..."
  • Setting yang diubah user persist setelah app restart
  • Grant rate notifikasi ditarget ≥60% (diukur via notification_permission_result)
  • Card konfirmasi "Yang kamu matikan, benar-benar mati." tampil setelah user mematikan notif

Success Metrics

Notif permission grant≥60%up from ~40% estimated
Support tickets (notif)Target: 0post-release
DAU from notif≥60%track via deep_link_open
Events: notification_permission_result · notification_setting_changed
Wave 1
Activation — Onboarding + Beranda
Melawan 51% W0→W1 drop. Target: Activation rate naik ke ≥70%.
2 fitur
W1-01
Onboarding — 3-Segment Entry
Build
4 screens

Acceptance Criteria

  • 3 segmen pilihan tampil di P-03: Kader / Muslim Umum / Habit Seeker
  • Pilihan segmen disimpan ke local storage DAN ke backend (endpoint: POST /user/segment)
  • Homepage yang ditampilkan sesuai segmen yang dipilih (3 varian berbeda)
  • Splash P-01 menggunakan hook copy: "Sudah 100 tahun Muhammadiyah membimbing umat..."
  • Permission primer P-04 muncul setelah segment selected, SEBELUM OS dialog
  • User bisa mengubah segmen di Profil > Pengaturan kapan saja
  • Onboarding hanya tampil SEKALI per install (bukan per session)
  • Total durasi onboarding ≤60 detik (median)
  • onboarding_segment_selected + onboarding_completed di-log

Success Metrics

Onboarding completion≥80%target
Segment selection rate≥85%tidak skip
W0→W1 activation≥70%up from 58%
Events: onboarding_segment_selected · onboarding_completed · onboarding_skipped
W1-02
Beranda — 3 Varian Adaptif
Enhance
3 variants + All-services

Acceptance Criteria

  • Beranda menampilkan varian yang sesuai segmen user dari onboarding
  • Zone NOW menampilkan waktu salat berikutnya dengan countdown real-time
  • FAB ❤ amber selalu tampil di semua varian beranda
  • Puck grid 8 item tampil dengan label yang sesuai segmen
  • Kader: e-KTAM status + iuran reminder prominently visible
  • Habit: Streak counter + progress tampil di hero zone
  • "Pesan Hari Ini" tampil di semua varian (konten dari CMS/API)
  • Banner promo/campaign tampil jika ada campaign aktif
  • Horizontal scroll untuk Berita + Video tersedia
  • Beranda load ≤2 detik pada koneksi 4G
  • Pull to refresh berfungsi

Success Metrics

First habit action D1≥50%dari beranda
Puck feature accessmonitor top 3via feature_selected
Banner CTR≥5%via home_banner_tapped
Events: feature_selected · home_banner_tapped · first_habit_action
Wave 2
Engagement — Habit Loop + Bridges
Jadwal Salat + Qur'an + Doa. Dead-end → connected habit journey.
3 fitur
W2-01
Jadwal Salat — Bridge A
Enhance
2 screens

Acceptance Criteria

  • Waktu salat akurat untuk kota user (API: Kemenag / Aladhan)
  • Bridge A card "Lanjut baca Qur'an?" muncul saat menunggu Subuh (≤15 menit)
  • Bridge A mengarahkan ke Qur'an reader dengan resume position yang benar
  • Toggle notif per-waktu salat berfungsi dan persist
  • Doa pagi (dzikir Subuh) auto-muncul di Subuh time zone
  • Bahasa salat konsisten: "Salat" bukan "Sholat" (Voice Guide)
  • bridge_a_triggered + bridge_a_accepted di-log dengan properties yang benar
  • Countdown real-time akurat sampai detik

Success Metrics

Bridge A shown rate≥70%dari Subuh screen open
Bridge A acceptance≥20%conversion target
Events: prayer_time_viewed · bridge_a_triggered · bridge_a_accepted
W2-02
Al-Qur'an — Reader + Bridge B Outro
Enhance
3 screens

Acceptance Criteria

  • Resume position persist di server (endpoint: PUT /user/quran-position) — tidak hilang saat re-install
  • Resume card tampil prominent di halaman Index Surah
  • Bridge B outro muncul setelah user membaca ≥10 ayat dalam satu sesi
  • Bridge B bisa di-skip kapan saja dengan tap "Nanti saja"
  • Tafsir Tarjih tersedia inline (tap ayat → bottom sheet)
  • Bookmark persist ke server
  • Copy outro: "23 ayat pagi ini. Posisi tersimpan otomatis." (angka dinamis)
  • Anti-riya copy: "Sedekahmu antara kamu dan Allah" tampil di Bridge B
  • quran_session_completed di-log dengan entry_source + ayat_read_count

Success Metrics

Resume rate≥70%user punya resume point
Bridge B shown≥95%dari session ≥10 ayat
Bridge B convert≥15%ke Sedekah Subuh
Events: quran_started · quran_session_completed · bridge_b_shown · bridge_b_converted
Wave 3
Trust + Retention — LazisMu · Sedekah Subuh · Zakat
Transparency + daily habit anchor. Retention target: W7 ≥25%.
3 fitur
W3-01
Sedekah Subuh — New Feature
Build
3 screens + FAB entry

Acceptance Criteria

  • Setiap transaksi punya kuitansi PDF yang bisa diunduh — bukti pembayaran sah
  • Dana disalurkan via API LazisMu resmi — bukan direct ke MASA account
  • Recurring sedekah bisa dibatalkan kapan saja dari Settings
  • FAB ❤ amber selalu bisa diakses dari semua halaman utama
  • Nominal default 5.000 sudah terisi saat screen dibuka
  • Slide-to-confirm (bukan button biasa) untuk konfirmasi — anti-accidental tap
  • Impact card privat: "Kamu + X jamaah" — tidak ada nama user lain yang ditampilkan
  • Streak counter privat default — tidak ada social sharing paksa
  • Copy streak: "Konsistensimu hari ke-X. Privat — hanya kamu yang melihat."
  • Forgiveness copy saat streak putus: "Subuh besok adalah pintu baru."
  • Religi clearance dari Majelis Tarjih terdokumentasi (PM action)
  • sedekah_subuh_setup di-log saat user konfigurasi recurring

Success Metrics

D7 retention (habit)≥25%target utama Wave 3
Recurring setup rate≥30%dari first-time sedekah
Bridge B → complete≥80%payment completion rate
Events: donation_initiated · donation_completed · sedekah_subuh_setup · habit_streak_recorded
W3-02
Donasi LazisMu — Trust Reskin
Reskin
3 screens

Acceptance Criteria

  • Verification badge "Terverifikasi" tampil dengan nama lembaga jelas di semua campaign
  • Kuitansi PDF tersedia dan bisa diunduh setelah donasi selesai
  • Breakdown alokasi dana tampil: "80% program · 15% operasional · 5% amil"
  • Nama ranting/PCM penyalur tampil di detail campaign
  • Foto program nyata (bukan stock photo) di semua campaign card
  • Progress bar dan angka terkumpul real-time
  • Copy campaign mengikuti formula: Pain → Insight → Guidance → Outcome
  • Weekly digest email/push dijanjikan di success screen
  • donation_impact_viewed di-log saat impact card ditampilkan

Success Metrics

Repeat donation rate≥25%target bulan ke-2
Impact viewed rate≥50%dari donasi selesai
Donation completion≥75%initiated → completed
Wave 4
Expand — Qurban + Ranting Saya + Konten
Ecosystem features. Qurban musiman, Ranting untuk kader.
5 fitur
W4-01
QurbanMu — Trust + Pembayaran Bertahap
Enhance
4 screens incl. tracking

Acceptance Criteria

  • Tidak ada kata "Paylater" atau "bayar nanti" di seluruh flow — HARUS "Pembayaran Bertahap" atau "Cicilan Syariah"
  • Disclaimer syariat tampil sebelum konfirmasi pembayaran bertahap
  • Tracking status 3 fase (Dibeli → Disembelih → Distribusi) update real-time
  • Sertifikat digital tersedia setelah distribusi selesai
  • Foto distribusi dikirim via push notif setelah Idul Adha
  • Pilihan lokasi kurban (minimal 3 daerah)
  • Pilih hewan + metode bayar di SATU halaman (tidak terpisah)

Success Metrics

Qurban completion rate≥70%initiated → paid
Cicilan adoption≥40%dari total qurban
Tracking open rate≥60%post-payment
W4-02
Ranting Saya — New Feature
Build
2 screens

Acceptance Criteria

  • Ranting ditentukan dari NBM user yang sudah terverifikasi
  • Nama pengurus + kontak tersedia (diisi oleh admin PCM)
  • List event ranting tampil dan link ke halaman Event
  • Jumlah jamaah ranting tampil
  • Summary donasi tersalurkan dari ranting (opsional fase pertama)
  • User bisa request pindah ranting (dengan approval PM)

Success Metrics

Ranting page open rate≥30%dari kader aktif
Wave 5
Polish — Reskin + Minor Enhance
Kiblat, KHGT, ChatHPT, Event, Profil polish. Tidak ada new arch.
5 fitur
W5-01
e-KTAM Card — Reskin
Reskin
3 states: aktif · nunggak · QR

Acceptance Criteria

  • QR code valid dan bisa di-scan oleh verifier resmi PP Muhammadiyah
  • Status "AKTIF" hanya tampil jika iuran bulan berjalan lunas
  • Status "NUNGGAK" tampil dengan CTA bayar iuran langsung
  • QR mode aktif saat card di-tap
  • NBM tampil dalam format XX.XXX.XXX
  • Nama ranting + tanggal kadaluarsa tampil di card

Success Metrics

KTAM view rate≥40%dari kader aktif / bulan
W5-02
ChatHPT — New Feature
Build
1 screen

Acceptance Criteria

  • Setiap jawaban menyertakan sumber: "Berdasar Putusan Tarjih Bab X" — tidak boleh jawaban tanpa sumber
  • AI tidak boleh membuat fatwa baru — hanya retrieve dari database HPT resmi
  • Pertanyaan populer tersedia sebagai chip suggestion
  • Jawaban yang relevan memiliki deeplink ke fitur (misal: ke kalkulator zakat)
  • chathpt_query_sent di-log dengan query_category

Success Metrics

Converted to action≥30%query → fitur tap
Source shown rate100%wajib — hard requirement

§3QA Testing Matrix — device coverage

Setiap wave harus ditest di minimal 3 device dari masing-masing tier sebelum release.

Device TierContoh DeviceOS VersionTest PrioritySkenario khusus
Low-end AndroidRedmi 9A, Samsung A13Android 10-11⬛ P0 — wajibMemory pressure, slow render, offline mode
Mid AndroidSamsung A54, Redmi Note 12Android 12-13◼ P1 — wajibKasus umum mayoritas user MASA
High-end AndroidSamsung S23, Pixel 7Android 14□ P2Animasi, large screen, foldable
iPhone SE / olderiPhone SE 2022, iPhone 12iOS 15-16◼ P1 — wajibSmall screen, Safari webview jika ada
iPhone moderniPhone 14, 15 ProiOS 17□ P2Dynamic Island awareness, ProMotion

§4Defect Classification — cara kategorisasi bug

SeverityKriteriaResponse timeContoh MASA
P0 CriticalData hilang, uang salah tersalurkan, crash at launch, fitur utama 100% tidak bisa digunakanFix dalam 4 jamVA error → blank screen · Salat salah waktu · Sedekah double-charge
P1 HighMajor feature tidak berfungsi, trust component hilang, error state tidak adaFix dalam 1 sprintVerification badge hilang · Kuitansi tidak bisa diunduh · Bridge B tidak muncul
P2 MediumMinor feature bermasalah, UI tidak konsisten dengan DS, copy salahFix dalam 2 sprintSpacing tidak sesuai token · Copy tidak sesuai Voice Guide · Skeleton terlalu lama
P3 LowCosmetic, typo minor, animasi kurang smoothBacklogSpacing 1px off · Animasi terlalu cepat · Icon ukuran tidak tepat
Definition of Done — per fitur:
✅ Semua ⬛ CRIT pass
✅ ≥90% dari ◼ MUST pass
✅ Universal checklist §2 pass
✅ Analytics events berfungsi (verified di Firebase Debug View)
✅ Code review approved
✅ Tested di minimal 3 device (low/mid Android + 1 iOS)
✅ PM sign-off

Akhir dokumen · Acceptance Criteria · MASA by LabMu · 12 Juni 2026

Index Handoff package: 4/4 Complete