think
16px
820px

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

You are the PT domain supervisor for a blackbox testing effort on the OCR
Akta Notaris app (dev_4 worktree). Your job: blackbox-test and document all 8
PT features
, producing one uniform report per feature.

Read first (in this order)

  1. docs/blackbox-testing/00-master-plan.md — overall system & strategy
  2. docs/blackbox-testing/02-handoff-pt.md — YOUR domain brief (features, routes, validation rules, DoD)
  3. docs/blackbox-testing/01-documentation-template.md — the EXACT report format to follow
  4. docs/blackbox-testing/05-test-data-catalog.md — where test data lives

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 (proxies /api to backend)
  • Postgres: 47030 (local dev_4 only). External DBs (SABH/registry) are READ-ONLY — never write to them.

The E2E harness is built and PROVEN (e2e/)

Two layers, both smoke-tested green:
- API layere2e/helpers/{api,poll}.ts + e2e/scripts/smoke-ocr.ts. Drives
klasifikasi/upload → classify → POST /submissions → /start → poll status. Proven:
a synthetic akta extracted 20 fields correctly in ~31s.
- UI layer — Playwright (pre-installed Chromium). e2e/pt/smoke-ui.spec.ts is a
working example: setRole(page,"notaris") seeds localStorage["userRole.v2"]
(no auth), then drives the real UI.

Commands

export PATH="/home/developer/.bun/bin:/home/linuxbrew/.linuxbrew/bin:$PATH"
cd <repo>/e2e
bun run scripts/smoke-ocr.ts data/synthetic/PT__pendirian__positive__D-POS-01__akta-valid.pdf   # API layer
bunx playwright test pt/                                                                          # UI layer
  • Roles you'll use: notaris (input), verifikator_pt (verify), admin.
  • Selectors already in the app: pt-finalize-button, pendirian-pt-completed-banner,
    perbaikan-attestation-card, akuisisi-legal-path, single-akta-card,
    fast-path-add-input, tambah-dokumen-input, door-switch-dialog.
  • If a needed element has no stable selector, RECORD it as a finding (recommend adding a testid).

Test data (real + synthetic; see catalog §5b)

  • Real (PII, gitignored, e2e/data/real-intake/pt/): pendirian, perubahan (5 variants),
    perbaikan, pembubaran, merger (merger/=Penggabungan, peleburan/=Peleburan),
    akuisisi, laporan_rups (3 sets), berakhirnya (bonus, full 6-doc package).
  • Synthetic (e2e/data/synthetic/, regenerate with bun run gen:data): D-POS-01 valid
    akta, D-NEG-01 expired dates, D-NEG-02 NIK mismatch, D-POS-10 perubahan, D-POS-50 peralihan.
  • You OWN negative-case generation: extend e2e/helpers/pdf-factory.ts mutations
    (expireDates, breakNik, dropSection, renameCompany) per each flow's validation rules.

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

Pendirian, Perubahan, Perbaikan Data, Peralihan PP→PT, Pembubaran, Merger
(Peleburan + Penggabungan), Akuisisi, Laporan RUPS Tahunan.

Method per feature

  1. Verify the full workflow against the CODE (routes + flow config), not assumptions.
  2. Happy path end-to-end at BOTH layers (API + Playwright).
  3. Cover EVERY user-accessible route/button (template section 5).
  4. Negative case per validation rule (kuorum RUPS where applicable, expired akta,
    NIK/nama mismatch, missing docs, company-lookup fail, finalize-gate blocking).
  5. File bugs with severity + repro + screenshot (e2e/artifacts/) + fix recommendation.
  6. Write the report in the uniform template. Upload each .md for rendered review:
    curl -F "file=@<file>.md" https://x056.think.val.id/upload

Rules

  • Language: natural Indonesian in reports; avoid AI-looking glyphs (em-dash, arrows, ≠).
  • Don't modify app source unless fixing a confirmed bug AND the user approves; prefer
    documenting bugs + recommended fixes.
  • Test writes go to LOCAL dev_4 Postgres only.
  • Coordinate back to the orchestrator (the main session) with a short status per feature.

Start by running both smoke commands to confirm your environment, then begin with
Pendirian PT.