think
16px
820px

LAUNCH BRIEF — Supervisor PP (paste this into a fresh Claude Code session)

You are the PP (Perseroan Perorangan) domain supervisor for a blackbox testing
effort on the OCR Akta Notaris app (dev_4 worktree). Test and document all 4 PP
features
, one uniform report each.

Read first (in this order)

  1. docs/blackbox-testing/00-master-plan.md
  2. docs/blackbox-testing/03-handoff-pp.md — YOUR domain brief (features, routes, per-flow document requirements, testability caveat, DoD)
  3. docs/blackbox-testing/01-documentation-template.md — the EXACT report format
  4. docs/blackbox-testing/05-test-data-catalog.md

The stack is already running (verify, don't boot)

  • Backend: http://localhost:47014 (curl -s localhost:47014/api/health/readyready:true)
  • Frontend: http://localhost:47024
  • Postgres: 47030 (local dev_4 only). External registry DB is READ-ONLY.

The E2E harness is built and PROVEN (e2e/)

export PATH="/home/developer/.bun/bin:/home/linuxbrew/.linuxbrew/bin:$PATH"
cd <repo>/e2e
bun run scripts/smoke-ocr.ts <pdf>     # API layer (see helpers/api.ts, poll.ts)
bunx playwright test pp/               # UI layer (write specs under e2e/pp/)
  • Roles: perseroan (input, home /pp/pendirian/klasifikasi), verifikator_pt (verify
    Perubahan/Perbaikan when they require it), admin.
  • Seed role via setRole(page,"perseroan") (see e2e/helpers/role.ts) — no auth.
  • Selectors present: ktp-upload-preview, aria-label="Hapus KTP",
    aria-label="Cari PP terdaftar", tambah-dokumen-input.

IMPORTANT testability caveat (read handoff §Karakter khusus PP)

PP_REGISTRY_MODE=real — Perubahan/Perbaikan/Peralihan require selecting a PP that
EXISTS in the real PROD registry. A PP you create via Pendirian in dev_4 will NOT be
in that registry. Before testing those three flows, ASK THE USER (Efran) whether to:
(a) use a real PP identifier that exists in the registry, or
(b) temporarily set PP_REGISTRY_MODE=mock so the latest COMPLETED PENDIRIAN_PP
submission becomes selectable.
Do not silently pick one.

The 4 features (one report each → docs/blackbox-testing/report/pp-<fitur>.md)

  1. Pendirian PP — form + Surat Pernyataan; BO (Beneficial Owner) attestation.
    Real data: e2e/data/real-intake/pp/Pendirian PP/{1 BO, 2 BO}/ (KTP+NPWP+surat pernyataan).
  2. Perubahan PP — form-based, pick registry PP; docs by jenis (owner→KTP+NPWP;
    transfer→Jual-Beli saham + KTP+NPWP; BO→KTP/SIM/Passport+NPWP; address→Domisili).
    Synthetic: D-POS-60 jual-beli, D-POS-61 domisili; reuse real KTP/NPWP.
  3. Perbaikan Data PP — form-based, section-based; owner→KTP+NPWP; address→Domisili;
    modal→Bukti Setor (D-POS-62). NIK and company name are LOCKED (can't be corrected).
  4. Pembubaran PP — registry-only + KTP upload; terminal self-service (no akta OCR).
    Real data: e2e/data/real-intake/pp/Pembubaran PP/ktp1.jpg.

Method per feature

  1. Verify workflow against CODE (routes/pp-*.ts + flow-engine/flows/pp-*.ts).
  2. Happy path at BOTH layers (API + Playwright).
  3. Cover EVERY user-accessible route/button (template section 5), incl. UploadToAutofill.
  4. Negative cases: BO kriteria draft-mode SKIP vs submission-mode REQUIRED; NIK/NPWP
    format & mismatch; wrong doc type into UploadToAutofill; PP not in registry;
    finalize gate + attestation checkbox.
  5. File bugs (severity + repro + screenshot + fix recommendation).
  6. Write reports in the uniform template; upload each:
    curl -F "file=@<file>.md" https://x056.think.val.id/upload

Rules

  • Natural Indonesian in reports; avoid AI-looking glyphs.
  • Don't modify app source unless fixing a confirmed bug with user approval.
  • Ignore .DS_Store junk files in the PP data folders.
  • Test writes to LOCAL dev_4 Postgres only.

Start by running the smoke commands, then begin with Pendirian PP (the one flow with
no registry dependency).