Platform

System changelog

Version history and recent updates across the platform: new modules, enhancements and fixes, with the test results recorded for each release.

2.32

2026-10-18 · Penyempurnaan modul dokumen

tested

Klause 7.5.3 lengkap: watermark uncontrolled copy pada semua salinan dokumen (layar, PDF, Word)

  • —Rekomendasi #2 (klausul 7.5.3) dilengkapi: watermark 'SALINAN TIDAK TERKENDALI / UNCONTROLLED COPY' pada pratinjau dokumen di layar (diagonal, semi-transparan)
  • —Watermark diagonal di setiap halaman ekspor PDF dokumen terkendali (drawn per page saat finish, hanya untuk ekspor dokumen — laporan lain tidak terpengaruh)
  • —Stempel 'SALINAN TIDAK TERKENDALI / UNCONTROLLED COPY' pada ekspor Word (.doc) — versi terkendali hanya berlaku di dalam aplikasi
  • —Dengan modul tugas baca per revisi (sudah ada & teruji) dan register distribusi (AckRegisterList), rantai bukti 7.5.3 lengkap: distribusi tercatat per revisi, pembacaan dikonfirmasi anggota, dan setiap salinan keluar sistem ditandai tidak terkendali
Dokumen TerkendaliDocument AcknowledgmentEkspor PDF/Word

2.33

2026-10-18 · Pemantauan kinerja proses

tested

Rekomendasi #3: register KPI per proses dengan tren, deviasi, dan auto-link CAPA (klausul 9.1.1)

  • —Rekomendasi #3: modul KPI / Process Performance Monitoring (klausul 9.1.1) — entitas Kpi (register per proses: target, arah, batas deviasi, frekuensi, PIC, tautan Objective) dan KpiDataPoint (data berkala, sumber manual/milestone)
  • —Gateway tenantKpis: CRUD register, pencatatan data berkala, status deviasi dihitung server-side per arah (di bawah batas bawah / di atas batas atas), dan auto-link CAPA: saat nilai melewati batas, CorrectiveAction dibuat otomatis (teks ID/EN sesuai bahasa, PIC sebagai penanggung jawab); tidak dibuat ganda selama CAPA sebelumnya masih terbuka; pembuat data wajib punya kapabilitas create_findings
  • —Halaman /workspace/kpi-monitoring: register dengan badge deviasi, panel per baris berisi grafik tren (recharts, garis referensi target & batas), form catat data (nilai, tanggal periode, sumber manual/milestone, catatan), daftar titik data dengan hapus (status KPI dihitung ulang), tautan ke CAPA terkait, form tambah/edit KPI dengan dropdown Objective (klausul 6.2) — melengkapi loop PDCA 'apa yang harus dicapai' ↔ 'apakah tercapai'
  • —Entri navigasi 'Pemantauan KPI' di grup Audit & Evaluasi · Klausul 9; terjemahan Bahasa Indonesia untuk seluruh teks modul
  • —Log append-only per KPI (created/updated/data_recorded/deviation_detected/capa_auto_created/data_deleted) sebagai jejak audit kinerja
Pemantauan KPI (klausul 9.1.1)Tindakan KorektifObjectives & KPI

2.26

2026-10-18 · Contract Management

tested

Sistem Manajemen Kontrak: register, editor, tautan proyek dua arah

  • —Halaman Contracts (Dashboard/Register/Templates), Contract Editor dengan panel Workflow, Obligations, Documents, Project dan Preview, ditambah rute dan menu navigasi Contracts
  • —Banner 'Under contract' di halaman detail proyek yang terhubung kontrak (nomor kontrak + proposal asal, tautan ke editor kontrak)
  • —Konversi proposal disetujui menjadi kontrak: idempoten per proposal, snapshot konten & harga dibekukan, penomoran CTR-YYYY-NNNN monoton server-side (0001/0002/0003 tidak dipakai ulang setelah hapus)
  • —Tab Project pada editor kontrak terkunci sampai kontrak aktif; taut dua arah kontrak-proyek terverifikasi (banner proyek + kartu proyek terhubung di editor) dan data uji dibersihkan
  • —Pembuatan proyek langsung dari kontrak (dialog di tab Project) dengan klien & standar terisi otomatis dari kontrak
Commercial ManagementContractsISO Consulting ProjectsNavigationRouter

2.27

2026-10-18 · Commercial Management

tested

Banner kampanye 'Go Paperless' di awal proposal (web & PDF) + upload di Commercial Settings

  • —Field banner kampanye (paperless_banner_url) pada Commercial Settings dengan upload/hapus gambar di halaman Commercial Settings (disimpan publik agar tampil di share page & PDF)
  • —Banner '#gopaperless' dirender di bagian atas dokumen proposal — tampilan web (admin preview & public share) dan halaman pertama konten PDF, lebar penuh dengan rasio asli
  • —Gateway settings_save & payload provider (admin + public) memuat banner; default di-seed dari gambar kampanye yang diunggah pengguna
  • —Banner bersifat aset variabel — dapat diganti per campaign tanpa mengubah proposal yang sudah terbit
Commercial SettingsProposalsProposal PDF

2.28

2026-10-18 · IMS Academy

tested

IMS Academy & Client Training Center — UI lengkap (program, sesi, peserta, tes pre/post, sertifikat, verifikasi publik)

  • —IMS Academy & Client Training Center lengkap: 6 entitas (program, sesi, peserta, tes, attempt, sertifikat) dengan gateway tenantTraining + publicTraining
  • —UI Academy: Dashboard metrik live, Learning Materials (materi privat + bank soal), Training Sessions, halaman detail sesi (tab Informasi/Peserta/Tes/Sertifikat), register sertifikat global
  • —Halaman publik token-gated: halaman tes peserta (kunci jawaban tidak pernah dikirim ke klien, auto-skor objektif, uraian menunggu review manual) dan verifikasi sertifikat publik
  • —PDF sertifikat A4 landscape dengan branding CBMS, nomor monotonic CRT-YYYY-NNNN (tidak pernah dipakai ulang), alamat verifikasi tercetak, disclaimer non-akreditasi
  • —Perbaikan bug: halaman tes publik mereset state saat token berganti; hasil tes menampilkan skor/ambang lulus sesuai bentuk balasan gateway
  • —Sesi uji verifikasi dibuat melalui gateway nyata lalu dibersihkan; audit event training.* tetap tercatat
IMS AcademyCommercial Management (numbering)Audit Trail

2.29

2026-10-18 · IMS Academy

tested

Materi belajar peserta: unduhan bahan pelatihan (slide/PDF) sebelum pre/post-test

  • —Portal peserta (Pelatihan & Tes Saya) kini menampilkan daftar bahan belajar per sesi, diambil dari materi program terkait
  • —Aksi gateway learner_material_open menerbitkan tautan unduhan bertanda tangan (5 menit) setelah memverifikasi keanggotaan organisasi dan bahwa program memang dikirim ke organisasi tersebut
  • —Materi hanya diekspos sebagai metadata; URI penyimpanan privat tidak pernah dikirim ke klien
  • —UI unggah materi admin di Materi & Kurikulum (sudah ada) dikonfirmasi berfungsi end-to-end dengan dialog unggah, daftar, buka, dan hapus
IMS AcademytenantTraining gatewayLearner portal

2.30

2026-10-18 · Modul baru

tested

Modul SoA & Controls Register (27001/27701) + Konfirmasi Pemahaman Dokumen

  • —Entitas baru: ControlImplementation (SoA/controls register) dan DocumentAcknowledgment (tracking konfirmasi per revisi dokumen)
  • —Gateway backend: tenantControls (list, seedCatalog, update) dan tenantAcknowledgments (generate, register, myList, acknowledge, cancel)
  • —Katalog kontrol ter-seeed idempoten: 93 kontrol ISO/IEC 27001:2022 Annex A + 78 kontrol ISO/IEC 27701:2025 Annex A (171 total)
  • —Guard klausul 6.1.3 d: kontrol not_applicable wajib justifikasi, ditolak server-side bila kosong
  • —Generate konfirmasi snapshot doc number/title/revision; notifikasi untuk assignee; assignee hanya bisa acknowledge tugasnya sendiri
  • —Halaman baru ControlsRegister.jsx & DocumentAcknowledgment.jsx (Bahasa Indonesia), terdaftar di rute dan sidebar
  • —AuditEvent diperluas: controls.catalog_seeded, controls.implementation_updated, documents.ack_generated, documents.acknowledged, documents.ack_cancelled
  • —Gate capability manage_registers untuk pengelolaan register; view untuk baca
SoA & Controls RegisterKonfirmasi Pemahaman DokumenSidebar & RuteSystem Logs (AuditEvent)Entity schema

2.31

2026-10-18 · Penyempurnaan dashboard

tested

Dashboard Kepatuhan: Executive Summary + navigasi klik (grafik, tabel, kartu)

  • —Seksi baru Executive Summary: verdict kesiapan audit (Audit-ready / On track / Needs attention) + daftar perhatian otomatis dari data live, tiap baris bisa diklik ke modul terkait
  • —Semua kartu metrik di dashboard kini bisa diklik: kesiapan rata-rata -> Laporan, tugas tertunda -> Tugas, temuan terbuka -> Temuan (status=open), bukti -> Bukti
  • —Grafik bisa diklik: donat Status dokumentasi (slice/legend -> Dokumen dengan filter status via ?status=), donat Kesiapan audit -> Standards, bar Readiness by standard -> Laporan per standar via ?code=
  • —Kartu per-standar: judul -> Laporan standar tsb; hitungan temuan/tugas -> halaman Temuan/Tugas
  • —Halaman Dokumen mendukung filter status deep-link ?status= dengan chip hapus filter
  • —Halaman Laporan mendukung preseleksi standar via ?code=
  • —Halaman Temuan mendukung ?status= (open/in_progress/closed)
Dashboard KepatuhanExecutive SummaryDokumenLaporan KepatuhanTemuan AuditGrafik kepatuhan

2.10.0

2026-10-17 · Branding & Contact

tested

Global rebranding to PT. CBMS Asia Consulting and public Contact Us page with inquiry management

  • —Rebranded company identity from 'PT ABeam Consulting' to 'PT. CBMS Asia Consulting' across site content defaults and stored CMS record (platform title, CTA text, footer copyright)
  • —Updated CommercialSetting provider identity: legal_name 'PT. CBMS Asia Consulting', brand_name 'CBMS.asia'; existing issued proposals/invoices keep their creation-time snapshots untouched
  • —Updated tenantCommercial gateway default legal_name and CommercialSetting schema example
  • —Built public Contact Us page at /contact: hero, two office location cards (Jakarta Selatan HQ and Marina Bay regional office, city/country only pending confirmed addresses), and a validated contact form
  • —Created ContactInquiry entity (RLS: admin-only read/update/delete; public visitors can only submit) with new/in_progress/responded/closed lifecycle
  • —Created publicContact backend function: server-side field validation, email verification, service-interest whitelist, hidden honeypot, 3-per-email-per-hour rate limit, service-role creation
  • —Built admin Contact Inquiries page at /workspace/contact-inquiries with status filter, status updates and internal notes; added to Administration nav (admin only)
  • —Added Contact Us link in public footer; Enterprise pricing plan CTA now links to /contact
src/pages/Contact.jsx (new)src/pages/workspace/ContactInquiries.jsx (new)base44/entities/ContactInquiry.jsonc (new)base44/functions/publicContact (new)src/App.jsxsrc/lib/siteContent.jssrc/components/WorkspaceLayout.jsxsrc/components/landing/LandingFooter.jsxbase44/functions/tenantCommercial/entry.tsbase44/entities/CommercialSetting.jsoncSiteContent recordCommercialSetting record

2.11.0

2026-10-17 · ISO Consulting Project Management

tested

ISO Consulting Project Management module: platform-level gateway, project dashboard/list/detail with milestones, weighted tasks, activity feed and stage gates; commercial gateway helpers consolidated into shared platformAdmin utilities

  • —New ISO Consulting Project Management module as platform-level data: ConsultingProject, ProjectMilestone, ProjectTask, ProjectActivity entities with admin-only RLS
  • —Server-side tenantProjects gateway: server-allocated project codes (PRJ-YYYY-NNNN), server-recomputed weighted progress (done 1 · in_review 0.5 · in_progress 0.25), one-stage-at-a-time gate changes requiring a mandatory note, close with open-item acknowledgement, delete restricted to planned/cancelled projects
  • —Duplicate-scope guard: an active project for the same client and standards scope is rejected server-side with an inline form error
  • —Full CRUD UI: Projects Dashboard, All Projects list, Project Detail with milestones, weighted tasks, activity feed, stage ribbon and info grid
  • —New /workspace/projects routes wired into the admin-only sidebar section
  • —tenantCommercial gateway refactored to share platform-admin helpers via platformAdmin.ts
  • —Standardized p-6 lg:p-10 root padding across all workspace pages including error states
ConsultingProjectProjectMilestoneProjectTaskProjectActivityAuditEventtenantProjectstenantCommercialplatformAdmin.tsconsultingUtils.jsProjectsDashboardProjectsListProjectDetailApp routingWorkspace sidebarWorkspace page padding

2.12.0

2026-10-17 · Portfolio Control Tower

tested

ISO Consulting Portfolio Control Tower: read-only executive aggregation module (dashboard, cross-project Gantt, Client 360) over the consulting and commercial records, with a dedicated server-computed portfolio gateway

  • —Audit-first integration inventory: all source data (clients, projects, milestones, tasks, proposals, invoices, activity) verified to live in this application; Base44 has no cross-app data access, so the Control Tower was implemented as a read-only aggregation module inside the verified source app (no data copies, no engine duplication, no changes to production workflows)
  • —New read-only gateway function tenantPortfolio (actions: overview, gantt, client_360): every action requires the platform admin role verified server-side; all KPIs, rollups and filters computed server-side with documented transparent rules (weighted task progress identical to the delivery engine, 14-day due-soon window, 8-open-task consultant overload threshold)
  • —Control Tower executive dashboard (route /workspace/control-tower): 11 live KPIs each drilling into its underlying records, server-side filters (client, status, ISO standard, project manager, consultant), project watchlist sorted by risk, overdue/due-soon milestones, overdue & blocked tasks, consultant workload, client portfolio grid, live-data provenance banner
  • —Portfolio Timeline cross-project Gantt (route /workspace/control-tower/gantt): project bars kickoff to target end with server-computed progress fill, milestone diamonds colored by status, today marker, month grid, client & status filters, drill-down to source projects
  • —Client 360 view (route /workspace/control-tower/clients/:clientId): identity & account manager, KPI row, all consulting projects with live progress, milestone/task risk lists, commercial history (proposals, invoices, receivables outstanding), recent project activity feed
  • —Navigation: new 'Portfolio Control Tower' sidebar group (admin-only) and routes registered under the PlatformAdminRoute gate
Portfolio Control TowerISO Consulting ProjectsCommercial ManagementNavigationBackend gateway

2.13.0

2026-10-17 · Portfolio Control Tower

tested

Alerts & Escalation for the Portfolio Control Tower: live server-computed alert queue with a documented severity ladder, per-alert escalation chains and suggested actions, plus a fix to the shared section card used across the module

  • —New 'alerts' action in the tenantPortfolio gateway: unified alert queue derived LIVE from source records (projects, milestones, tasks, consultants, invoices) — no stored state, no acknowledgment, no write-back, keeping the Control Tower strictly read-only
  • —Documented server-side severity ladder: critical (≥7 days overdue, overdue critical-priority task, or overdue commercial invoice), warning (1-6 days overdue, blocked task, overloaded consultant, unassigned high/critical-priority task), info (milestone due within 14 days, unassigned normal-priority task)
  • —Server-side escalation chain resolved per alert from the data: info → owner; warning → owner + project manager; critical → owner + project manager + executive, each with a suggested action and days-overdue aging
  • —8 alert types covered: project overdue, milestone overdue, milestone due soon, task overdue, task blocked, unassigned task, consultant overloaded, overdue invoice (with outstanding amount)
  • —New Alert Center page (route /workspace/control-tower/alerts, admin-only): severity summary cards, documented severity rules, client filter (server-side) plus severity/type filters, queue sorted by severity then age with per-alert escalation chain and drill-through to the source project, escalation policy panel
  • —Navigation: 'Alerts & Escalation' entry in the Portfolio Control Tower group; shortcut button on the Control Tower dashboard
  • —Fix: shared SectionCard component silently ignored the titleBody pattern used by all Control Tower pages (older pages kept working from cached modules; any fresh build would have rendered empty sections) — titleBody is now an explicit, supported prop
Portfolio Control TowerBackend gatewayShared UI componentsNavigation

2.14.0

2026-10-17 · Portfolio Control Tower

tested

Reports & Export for the Portfolio Control Tower: one live server-computed snapshot with a branded executive PDF control report and four CSV exports, plus gateway refactor to shared KPI/alert helpers

  • —New 'report' action in the tenantPortfolio gateway: one live, read-only snapshot of the whole portfolio — executive KPIs, the full alert queue, receivables exposure broken down PER CURRENCY (never summed across currencies), project register with risk rollups, and client portfolio — plus provider branding (CommercialSetting) for document generation; nothing recomputed in the browser
  • —Refactor: KPI computation and alert derivation extracted into shared server helpers (computeKpis, computeAlerts, loadOpenInvoices) so the overview, alert center and report can never drift apart; the documented severity ladder and escalation chain are unchanged
  • —New Reports & Export page (route /workspace/control-tower/reports, admin-only): live preview grid (projects, portfolio progress, open alerts, open receivables), client + status filters (server-side), calculation rules panel, and provenance banner
  • —Exports: branded executive 'Portfolio Control Report' PDF (jsPDF via the shared branding factory: executive summary, alert queue, receivables per currency, project register, methodology) plus four CSV exports — projects register, alert queue (with escalation chain), open receivables (with aging), client portfolio — RFC-4180-safe with BOM for Excel
  • —Logo loader in the shared PDF branding now fetches public http(s) logo URLs directly (previously only private signed storage URIs), so the report is branded with the provider identity
  • —Navigation: 'Reports & Export' entry in the Portfolio Control Tower group
  • —Shared alert severity/type label maps moved to the portfolio module library so the Alert Center, report page and CSV exports use one source of truth
Portfolio Control TowerBackend gatewayReports & ExportShared UI componentsNavigation

2.15.0

2026-10-17 · Portfolio Control Tower

tested

Automatic notifications for critical portfolio alerts: shared alert-derivation module, daily scheduled workflow at 07:00 Jakarta, in-app notifications to all platform administrators with per-alert dedupe

  • —New shared server module for the Control Tower derivation rules (status windows, thresholds, portfolio loaders and the full alert severity ladder) — now the single source of truth imported by the tenantPortfolio gateway and the new notifier, so dashboards, reports and notifications can never drift apart
  • —New portfolioAlertNotify backend function (platform-admin only): derives the live alert queue with the shared rules and posts one in-app notification to every platform administrator for each CRITICAL alert, stored under the 'platform' sentinel organization like all platform-level notifications — visible in the workspace notification bell with a link to the Alert Center
  • —Dedupe by design: an alert id is notified to a user only once, so repeated daily runs never spam; since only critical alerts notify, an alert is announced the first time it reaches critical severity
  • —New scheduled workflow 'Critical Alert Notifications': daily at 07:00 Asia/Jakarta, invokes the notifier (first workflow in the app)
  • —Notification bell deep-links portfolio_alerts notifications to the Alert Center; the Alert Center documents the automatic critical notification policy in its escalation panel
Portfolio Control TowerAutomatic notificationsBackend gatewayWorkflowShared UI components

2.16.0

2026-10-17 · Gap Analysis & Implementation Action Planner

tested

Gap Analysis & Implementation Action Planner module

  • —New GapAssessment and GapItem entities with full clause provenance snapshot from the framework registry (registry changes never rewrite existing assessments)
  • —New tenantGapAnalysis backend gateway: platform-admin only, server-side status transitions, applicability (N/A requires justification), independent review approval, scoring (coverage / implementation / verification indexes), GA-YYYY-NNNN numbering
  • —Improvement actions convert to real project tasks (idempotent link, no duplicate creation) inside the source project
  • —Evidence attaches from the project's private document repository via signed URLs (stored privately)
  • —Reassessment creates a new version; baseline becomes superseded only after the new version is approved; approved assessments and reports are immutable
  • —Report generator produces numbered, approvable snapshot reports with per-standard results and baseline delta; export to PDF/Word
  • —AI draft assistant (per requirement) and AI executive summary: clearly-labelled drafts, never auto-applied, review required
  • —New workspace UI: Gap Analysis dashboard, assessment workspace (score cards, limitation banner, requirements table), requirement editor dialog, report page; mobile-responsive
  • —Registry coverage limitation (Annex SL top-level clauses only) is displayed on every assessment and report surface and blocks comprehensive claims
  • —Fix: aggregate score now sums improvement actions and evidence counts (was always 0)
  • —Fix: requirement editor no longer triggers React uncontrolled-input warning; audit trail expanded with gap-assessment events
Gap Analysis module (new)tenantGapAnalysis gateway (new)GapAssessment, GapItem entities (new)WorkspaceLayout navigationAuditEvent logFramework registry (reuse, read-only)

2.17.0

2026-10-17 · Phase 2.5 — Gap Analysis UX

tested

Kartu gap analysis interaktif: label status Indonesia, status bukti independen, filter tambahan, validasi deskripsi gap dan fixture simulasi

  • —Audit spesifikasi kartu gap analysis interaktif terhadap implementasi eksisting: seluruh aturan status terkontrol, review independen, justifikasi N/A, aksi idempotent dan audit trail sudah ada di gateway tenantGapAnalysis — dipetakan, tidak diduplikasi
  • —Baris persyaratan di workspace assessment diganti kartu interaktif responsif (standar+edisi, klausul, status alur kerja, diperbarui terakhir + aktor, tautan Project, pratinjau gap/tindakan, affordance Buat Tindakan di Project)
  • —Label status penilaian dipetakan ke bahasa Indonesia (Belum dinilai / Belum diterapkan / Sudah sebagian / Diterapkan — bukti menunggu verifikasi / Terverifikasi diterapkan / Tidak berlaku) — tampilan saja, enum terkontrol tidak berubah
  • —Label prioritas dipetakan (Kritis / Tinggi / Sedang / Rendah); perubahan prioritas tidak pernah mengubah status penilaian, status bukti, atau penutupan gap
  • —Status bukti independen per persyaratan (Belum ada bukti / Draft — bukti belum memadai / Bukti terverifikasi / Bukti ditolak), diturunkan dari item bukti dan keputusan review independen
  • —Filter baru di workspace assessment: prioritas dan status bukti, melengkapi filter standar, status dan pencarian
  • —Deskripsi gap kini wajib (UI + server-side) saat persyaratan ditandai Belum diterapkan atau Sudah sebagian; pesan validasi tanpa kehilangan input yang belum disimpan
  • —Fixture simulasi terisolasi (?simulasi=1 di dashboard Gap Analysis) merender kartu skenario referensi dengan indikator Data Simulasi; render-only, tidak ada data yang disimpan
Gap AnalysisISO Consulting ProjectstenantGapAnalysis gatewayChangelog

2.18.0

2026-10-17 · Manajemen Komersial — Template Proposal Referensi IMS

tested

Template proposal referensi IMS (ISO 9001, 14001, 45001) untuk PT KLES Indo Jaya: tabel breakdown biaya konsultasi & sertifikasi, kotak Total Investasi pada preview dan PDF, draf referensi PRP-2026-0016 senilai Rp90.000.000

  • —Penandaan kelompok biaya (konsultasi/sertifikasi) opsional pada item proposal & template — satu-satunya perubahan skema, kompatibel dengan semua proposal lama
  • —Tampilan dokumen & PDF proposal: tabel Breakdown Biaya Konsultasi/Biaya Sertifikasi bernomor dengan subtotal per tabel, kotak sorot Total Investasi (GRAND TOTAL sebelum pajak), jalur render tabel tunggal lama tetap utuh
  • —Editor item harga: pemilih kelompok biaya per baris (dipakai bersama editor proposal & template)
  • —Kalkulasi server: sanitizeLineItems mempertahankan penanda kelompok dengan daftar nilai yang diizinkan
  • —Data referensi: klien PT KLES Indo Jaya, template Proposal Penawaran IMS (ISO 9001/14001/45001), dan proposal draf PRP-2026-0016 — senilai Rp90.000.000 (Rp50jt konsultasi + Rp40jt sertifikasi, belum termasuk PPN 11%), dibuat melalui gateway tenantCommercial dengan jejak audit
Manajemen KomersialProposal TemplatesProposal PDF

2.20.0

2026-10-17 · Simulasi Operasional

implemented

Pengisian penilaian persyaratan tenant PT Kiani Indo Jaya: 21 klausul awaiting_verification, 3 bukti dokumen + 24 pemetaan AI kandidat, undangan verifikator kedua

  • —Undangan verifikator kedua (nextraapps@gmail.com, role compliance_manager) ke org PT Kiani Indo Jaya untuk memenuhi pemisahan tugas verifikasi bukti (pemeriksa ≠ pengunggah)
  • —3 bukti dokumen IMS terunggah ke penyimpanan privat (stored privately): Manual IMS, SOP-09 Audit Internal & Tinjauan Manajemen, SOP-10 CAPA & Peningkatan Berkelanjutan
  • —Ekstraksi AI ketiga dokumen menghasilkan 24 pemetaan klausul kandidat (15+6+3) menunggu peninjauan manusia
  • —Seluruh 21 penilaian persyaratan (7 klausul Annex SL × 3 standar) diisi status awaiting_verification dengan alasan tercatat di riwayat keputusan
Standards & Persyaratan (Assessments)Evidence RepositoryAI Document MappingCompliance DashboardOrganization Settings

2.21.0

2026-10-17 · Operational Simulation - PT Kiani Indo Jaya

tested

Penuntasan simulasi operasional KIJ: verifikasi bukti & 21 klausul implemented & verified, skor kesiapan Dashboard Kepatuhan 100%

  • —Verifikasi bukti: 3 dokumen (Manual IMS Rev. 3, SOP-09, SOP-10) diverifikasi oleh akun compliance_manager (pemisahan tugas dari pengunggah)
  • —Penerimaan 24 pemetaan AI oleh compliance_manager; tautan bukti-ke-klausul terisi otomatis pada 21 penilaian
  • —21 klausul assessment PT Kiani Indo Jaya diperbarui awaiting_verification → implemented_verified via gerbang tenantAssessments dengan justifikasi kecukupan per klausul (gerbang kecukupan terpenuhi: bukti terverifikasi + justifikasi eksplisit)
  • —Validasi Dashboard Kepatuhan: Kesiapan rata-rata 100%, donut kesiapan audit 100% READY (21 implemented & verified), 3 dari 3 bukti terverifikasi
  • —Riwayat keputusan append-only tercatat pada setiap penilaian (siapa, kapan, dari/ke status, justifikasi)
Workspace TenantEvidence RepositoryAssessmentCompliance Dashboard

2.22.0

2026-10-17 · IMS Document Control & Document Generation - PT Kiani Indo Jaya

tested

Paket dokumentasi IMS lengkap PT Kiani Indo Jaya: 76 dokumen terkendali (12 jenis x 3 standar), gerbang dokumen diperluas, Peta Dokumen interaktif dengan status per sel

  • —Audit modul dokumen existing: 7 dokumen KIJ (isi tipis, tanpa nomor sebagian besar) diperluas menjadi 76 dokumen terkendali via gerbang tenantDocuments (RLS + pemisahan tugas tetap utuh)
  • —Peningkatan gerbang minimal: create menerima clauses/covered_frameworks/doc_number; revise dapat memperbarui content/title/type/clauses/doc_number/review_date; updateStatus mencatat approval_history (siapa/kapan/dari-ke)
  • —Schema Document: tambahan field opsional covered_frameworks (dokumen IMS bersama) - tanpa mengubah RLS
  • —Peta Dokumen: matriks 12 jenis x 3 standar dengan status per sel (jumlah, disetujui/belum, cakupan IMS bersama), klik sel membuka dialog daftar dokumen atau alasan kosong, metrik draft/review/disetujui dihitung dari database
  • —Formulir Dokumen baru: input nomor dokumen, klausul terkait, dan centang cakupan IMS lintas standar
  • —Paket IMS dibangun: 1 Manual IMS, 4 kebijakan (3 direvisi substansif), 24 SOP (23 baru + 1 direvisi), 6 instruksi kerja, 17 formulir, 13 register (11 baru + 2 direvisi, 1 retype risk_assessment->register), 3 penilaian risiko per standar, 4 rekaman operasional berlabel SIMULASI, 1 laporan audit (SIMULASI - Draft), 1 rekaman CAPA, 1 tinjauan manajemen, 1 rekaman pelatihan
  • —Seluruh 76 dokumen diserahkan ke status Dalam tinjauan (menunggu persetujuan compliance_manager - pemisahan tugas mencegah persetujuan oleh pembuat)
  • —Rekaman simulasi berlabel DATA SIMULASI; laporan audit berstatus Draft; kehadiran pelatihan tidak dikarang (data individu dinyatakan belum tersedia)
DocumentsDocument RepositoryDocument MaptenantDocuments gatewayDocument entityCompliance Dashboard (tidak diubah)

2.23.0

2026-10-17 · Document Control & Approval - Blok Persetujuan ISO

tested

Blok persetujuan dokumen ISO (Pembuat/Persetujuan/Pengesahan) + header & footer ter-branding di seluruh dokumen terbitan

  • —Kartu pengaturan baru 'Kontrol dokumen — pelaku persetujuan' di Pengaturan Organisasi: tim DCC, tim penyusun, serta nama & jabatan pelaku Pembuat/Persetujuan/Pengesahan, dengan pratinjau blok langsung
  • —Blok kontrol dokumen ISO (tabel info revisi + tabel tanda tangan 3 kolom) kini dirender pada pratinjau dokumen, ekspor PDF, dan ekspor Word semua dokumen terkendali
  • —Pratinjau dokumen di halaman Dokumen didesain ulang menjadi tampilan ter-branding lengkap: header (logo + organisasi + judul), metadata, isi, blok persetujuan, dan footer kontak/disclaimer — konsisten dengan PDF/Word
  • —Gerbang tenantOrgSettings: 8 kunci branding kontrol dokumen baru di-whitelist (maks 200 karakter), disimpan dalam objek branding organisasi
  • —Entity Organization: 8 properti branding baru dideklarasikan (schema lengkap, tanpa perubahan RLS)
Organization SettingsDocumentsPDF exportWord exporttenantOrgSettings gatewayOrganization entity (branding)

2.23.1

2026-10-17 · Document Control & Approval - Blok Persetujuan ISO

tested

Unggah tanda tangan basah pelaku persetujuan dokumen (Pembuat/Persetujuan/Pengesahan)

  • —Field unggah tanda tangan basah per pelaku (Pembuat / Persetujuan / Pengesahan) di kartu Kontrol dokumen pada Pengaturan Organisasi, dengan pratinjau thumbnail dan tombol Unggah/Hapus
  • —Gambar tanda tangan disimpan privat (UploadPrivateFile) dan dirender via URL bertanda tangan singkat — pola sama dengan logo organisasi
  • —Tanda tangan basah tampil di ruang tanda tangan blok persetujuan: pratinjau langsung di pengaturan, pratinjau dokumen, ekspor PDF, dan ekspor Word
  • —Entity Organization: 3 properti branding baru (doc_created/approved/endorsed_signature_uri); gerbang tenantOrgSettings mem-whitelist ketiganya
Organization SettingsDocuments (preview)PDF exportWord exporttenantOrgSettings gatewayOrganization entity (branding)

2.23.2

2026-10-17 · Document Control & Approval - Blok Persetujuan ISO

tested

Editor dokumen lengkap (semua field) dengan editor kaya + unduh PDF/Word di dalam editor

  • —Fitur Ubah Dokumen: tombol pensil di setiap baris daftar dokumen membuka dialog editor lengkap dengan SEMUA field yang dapat diedit (judul, jenis, standar, IMS, nomor, klausul, departemen, revisi, tanggal berlaku, tanggal tinjauan, status, konten)
  • —Editor WYSIWYG ramah (react-quill-new, rasa TinyMCE): judul heading, tebal/miring/garis bawah, daftar bernomor & berbutir, tautan, bersihkan format; teks polos lama otomatis dikonversi ke paragraf saat dibuka
  • —Tombol Unduh PDF & Unduh draf Word di dalam editor (unduhan mengikuti isi editor terkini) — melengkapi tombol unduh per baris yang sudah ada
  • —Pratinjau dokumen kini merender konten kaya (heading/list/tabel) sebagai HTML, bukan tag mentah
  • —Gerbang tenantDocuments: aksi revise kini menerima framework_code dan effective_date; perubahan status tetap lewat jalur updateStatus dengan pemisahan tugas (pembuat tak bisa menyetujui dokumennya sendiri) dan pencatatan riwayat revisi otomatis
Documents pageDocument Editor (new)Document previewtenantDocuments gatewayworkspace translations

2.24

2026-10-17 · Improvement & Clause 10 Registers

tested

Register Perbaikan Berkelanjutan (ISO 9001 klausul 10.1)

  • —Register Perbaikan Berkelanjutan baru di rute /improvement-register (ISO 9001 klausul 10.1): mencatat saran, peningkatan sistem, dan umpan balik positif untuk perbaikan sistem manajemen
  • —Siklus hidup perbaikan: Terdeteksi → Dalam evaluasi → Disetujui → Diimplementasikan → Tervalidasi (atau Ditolak); tanggal implementasi diatur otomatis oleh server saat status mencapai Diimplementasikan
  • —Kartu KPI (catatan perbaikan, item terbuka, diimplementasikan, tervalidasi) + filter kategori/sumber/status, akses gerbang dengan izin view/manage_registers sama seperti register lain
  • —Entri menu sidebar baru 'Perbaikan Berkelanjutan' di grup Klausul 4 & 6; antarmuka diterjemahkan penuh (ID)
Improvement Register page (new)ContinuousImprovement entity (new)tenantImprovements gateway (new)Workspace navigationWorkspace translations

2.25

2026-10-17 · Localization

tested

Pelokalan konten Audit Simulasi & teks workspace tersisa

  • —Konten AI Audit Simulasi (ringkasan, kekuatan, area fokus, temuan, pertanyaan auditor) kini dihasilkan dalam bahasa antarmuka pengguna: halaman mengirim parameter language ke gateway, prompt LLM menulis seluruh konten dalam Bahasa Indonesia (nilai severity/klausul tetap)
  • —Label severity temuan (major/minor/observation) kini diterjemahkan di halaman (Mayor/Minor/Observasi)
  • —Perbaiki 30+ teks yang belum diterjemahkan di seluruh menu workspace: Gap Analysis (nav), Tindakan Korektif, Document Map (status dokumen), CbRelationship, Team, Profile, Settings, SystemLogs, AuditCalendar, Objectives, FeedbackRegister, Incidents, ComplianceDashboard, dan lainnya
  • —Kamus workspaceI18n ditambah 33 kunci baru
Mock Audit pagetenantMockAudit gatewayWorkspace translations (i18n)Sidebar navigation

2.19.0

2026-10-17 · Simulasi Operasional

tested

Simulasi operasional lengkap implementasi IMS PT Kiani Indo Jaya: dari proposal diterima, pembayaran penuh, gap assessment 3 standar, populasi 8+ modul tenant, hingga sertifikasi & penutupan proyek PRJ-2026-0002

  • —Penyelesaian simulasi operasional end-to-end PT Kiani Indo Jaya: proposal PRP-2026-0020 diterima (signer provider resolv dinamis via CommercialSetting), invoice 3 termin diselesaikan penuh
  • —Project PRJ-2026-0002 dibuat dari proposal diterima; Gap Analysis GA-2026-0002 (ISO 9001, 14001, 45001) disetujui dengan tindakan perbaikan tertaut tugas proyek
  • —Modul tenant terisi: risks, objectives, legal, aspects-impacts, suppliers, assets, competency, audit schedule, mock audit (3 sesi AI), findings, CAPA, management review
  • —Tugas & milestone stage 1-10 selesai; sertifikat 3 standar aktif (issue 2027-04-15, expiry 2028-04-14, surveillance 2027-10-14)
  • —Penutupan proyek: status completed, stage 10, progress 100%, actual_end 2026-10-17, warranty hingga 2028-04-14 dengan catatan closure & lessons learned
  • —Koreksi fixture pasca-penutupan: 14 tugas & 6 milestone stage 5-10 dituntaskan langsung di entity karena proyek selesai tidak dapat diedit via gateway (perbaikan dicatat transparan di sini, tanpa audit event gateway)
Commercial ManagementConsulting ProjectsGap AnalysisCertificatesAudit ScheduleMock AuditCAPAFindingsManagement ReviewTenant ModulesPortfolio Control Tower

2.5.0

2026-10-16 · 2.5 Critical defect remediation & security verification

tested

Members-anchor sync fix, runtime signed-URL & audit-trail verification, honest landing claims, full fixture regression

  • —syncUserOrganizations: anchor consistency pass — every organization with an ACTIVE membership is anchored to Organization.members on EVERY sync (previously only on ownership claim or invite acceptance). Membership remains the only authorization source; org.members stays a read-rule anchor, idempotent and fail-closed (anchor failure never grants access; revoked memberships never re-enter)
  • —Landing page (Home): overclaims removed or revised — internal audit & CAPA module, certification-body directory, Stage 1/2 preparation, external auditor portal, 'ten roles from SaaS Super Admin', blanket 'every create/update' audit-trail claim, and AI 'internal audit questions' replaced with shipped functionality or explicit future-phase wording
  • —docs/FRAMEWORK-REGISTRY-VALIDATION-PLAN.md: 5-stage staged validation plan (structure validation with provenance, licensed requirement validation, standard-specific sub-clauses, expert review, publication gates) — no clause status changed
  • —docs/PHASE-2.4-two-account-security-test.md: updated with Phase 2.5 operator findings — plus-alias invite path to obtain a real second account, runtime signed-URL behavior, re-verified negative battery
  • —No changes to entity schemas, RLS, or gateway authorization logic
syncUserOrganizationsHome (landing page)docs/PHASE-2.4-two-account-security-test.mdsrc/docs/FRAMEWORK-REGISTRY-VALIDATION-PLAN.mdTestRun fixture lifecycleChangelog

2.6.0

2026-10-16 · 2.6 Minor feature - public site CMS

tested

Website CMS: platform-admin editor for all public landing content, with logo management and a separate Pricing module with on/off toggle

  • —New SiteContent entity: single site-wide CMS record (section-keyed content JSON + pricing_enabled flag); read is public for anonymous visitors, writes restricted to platform admins
  • —New admin page Website CMS (/workspace/site-content) with sidebar entry visible only to platform admins: tabbed editors for Logo, Header & Hero (incl. navigation links), Standards, How It Works, Platform, Features & Security, AI, Pricing, FAQ & CTA, Footer - with add/remove on every list, image upload fields (stored publicly - required for the public page), and a Save & publish action
  • —Pricing is a separate module with its own visibility switch; when disabled the pricing section and its navigation link are hidden from the public page
  • —Landing page (Home, LandingHeader, LandingFooter) now renders from the CMS with built-in defaults as fallback; logo management from 2.5.3 remains available both in the CMS and via the header gear dialog
  • —Fixed stale-content cache: publishing now invalidates the cached site content and logo so a freshly opened landing always shows current content
Landing page (all sections)Website CMS admin pageSiteContent entitySiteLogo / SiteSetting

2.4.0

2026-10-16 · 2.4 Release readiness, two-account security gate & audit consolidation

tested

Phase 2.4 release-readiness audit: data integrity verified, two-account gate prepared, release decisions recorded (internal GO, pilot CONDITIONAL GO, external NO-GO)

  • —No product code changes — audit-only release gate (per phase plan)
  • —Full read-only integrity and history audit executed against live production data
  • —Negative gateway security battery re-verified from a real account (non-member org 403, forged record id 404, missing org id 400)
  • —Two-account security test procedure authored with 15-case matrix (docs/PHASE-2.4-two-account-security-test.md); execution BLOCKED — no second account provisionable
  • —Release decisions recorded: internal testing GO, limited pilot CONDITIONAL GO, external production NO-GO
ChangelogFramework registryOrganization/MembershipAssessmentEvidenceDocMappingAuditEventTestRunLanding page (Home)Gateway functions (tenantEvidence, tenantAssessments)OrgContext workspace org loading

2.3.0

2026-10-16 · 2.3 Evidence Quality, Verification & Traceability

tested

Evidence quality control: verification gates, traceability, and honest AI extraction

  • —Implemented machine verification of AI-extracted quotes against server-parsed file content (quote_verified on DocMapping)
  • —Enforced strict file format support: PDF/images for vision LLM, CSV/JSON/HTML for text scan; XLSX rejected with honest error
  • —Added sufficiency_notes to Assessment with a gateway gate: implemented_verified requires human sufficiency justification, linked evidence that is verified, not rejected, and not expired
  • —Added validity_expiration and reviewed_date to Evidence; expired evidence can never support an implemented_verified status
  • —Mandatory human rejection reasons for Evidence (reviewer_comments) and DocMapping (review_notes) rejections
  • —Separation of duties enforced on evidence verify and mapping review (uploader cannot review own uploads)
  • —Gap report now classifies evidence quality: verified vs unverified vs rejected vs expired, surfacing evidence_awaiting_verification and evidence_insufficient gaps
tenantAssessments gatewaytenantEvidence gatewaytenantAiReview gatewayEvidence entityAssessment entityEvidence pageExtractionPanelStandards pageGapReport

2.2.0

2026-10-16 · Phase 2.2

tested

AI extraction accuracy, evidence validation and hallucination resistance

  • —DocMapping schema adds quote_verified (true/false/null): machine verification of the AI quote against the content the server itself extracted from the file; null is explicit 'not machine-checkable', never a claim of genuineness
  • —Extraction now machine-verifies quotes for raw-text formats (CSV/JSON/HTML) against the verbatim file text; a quote that cannot be found forces the mapping to needs_review instead of candidate — never deletes it
  • —AI-suggested doc_date is stored only when it is a real YYYY-MM-DD date; anything else is dropped rather than displayed as fact (prevents junk-but-plausible metadata)
  • —New recheckQuotes action: re-reads the file server-side, re-verifies every stored quote, appends history entries, and returns failing candidates to needs_review
  • —Fix (honest format declaration): XLSX removed from supported formats — the platform table extractor requires pre-declared column schemas impossible for arbitrary user spreadsheets, so every real XLSX always failed schema validation; supported formats are now stated explicitly (PDF, PNG, JPG, CSV, JSON, HTML)
  • —Fix (table extraction): CSV/JSON/HTML are now fetched as bounded raw text server-side instead of the schema-validated table extractor, which failed on all real CSV files (row validation errors)
  • —ExtractionPanel shows a warning when a mapping's quote failed machine verification and a confirmation when it passed
  • —Evidence-based test matrix battery: 7 fixture documents (relevant-explicit, incomplete, contradictory, irrelevant, dense table, prompt-injection attempt, empty/corrupted/unsupported) with expected results fixed before the run and quotes checked against authored ground truth
tenantAiExtract gatewaytenantAiReview gatewayDocMapping schemaEvidence page (ExtractionPanel)Test fixtures battery

2.1.0

2026-10-16 · Phase 2.1

tested

Framework registry provenance, validation workflow and AI mapping impact-scan

  • —Framework schema extended with clause-level provenance: origin (annex_sl / standard_specific), source, source_url, source_type, validation_status, validation_scope, validated_by, validated_date, plus sub-clause parent support
  • —Framework schema adds registry_version (monotonic semver), append-only revision_history, source_refs, coverage_notes, last_reviewed_date
  • —DocMapping schema snapshots framework_registry_version and clause_validation_snapshot at creation and gains impacted / impact_reason / impact_date / history for registry-change tracking
  • —New platform-admin frameworkRegistry gateway: audited clause structure updates (duplicate clause numbers and invalid parent references rejected), validate action requiring recorded provenance (official text requires explicit license confirmation, default scope structure_only), impact-scan flagging affected mappings for re-review
  • —Impact-scan semantics: accepted mappings affected by a registry change move to needs_review with an explicit history entry and are never silently altered or deleted; mapping/review gateways now block mapping to removed or superseded clauses
  • —10 production frameworks migrated to registry v0.9.0 with recorded source references and explicit coverage gaps; no clause content changed during migration
  • —Standards page adds Framework Registry Audit report (registry version, validation breakdown, clause origin, coverage percentage, provenance sources, method disclaimer) and impacted-mapping chip; Evidence mapping cards show registry snapshot line and impacted warning
  • —Fixture battery extended: 25-record fixture tree (organization, framework, assessments, evidence, mappings) under one TestRun with dry-run-then-delete cleanup; validate action now also records the validation source in the framework-level source_refs
  • —Fix: AI-suggested clause numbers truncated for long framework codes; status dropdown width on Standards now responsive on mobile
Framework schemaframeworkRegistry gatewaytenantAiExtract gatewaytenantAiReview gatewayStandards pageEvidence page

2.0.0

2026-10-16 · Phase 2.0

tested

Phase 2.0 — AI document extraction and ISO gap mapping

  • —Fixed membership race condition: convergent deduplication in syncUserOrganizations — parallel syncs converge to exactly one active owner, duplicates revoked with AuditEvent provenance (8/8 tests PASS)
  • —AI document extraction: PDF/CSV/XLSX/JSON/HTML + scanned images analyzed with confidence + coverage; .docx and unreadable files rejected with clear user-facing status (extracted/partial/failed/unsupported_format)
  • —AI clause mapping engine: extracted content mapped to top-level Annex SL clauses with verbatim source quote, reason and confidence; sub-clause folding; duplicate-pair and re-run idempotency enforced
  • —Human review workflow: accept (with clause correction), reject, reject-all with append-only history, reviewer identity recorded server-side; separation of duties enforced (uploader cannot review own evidence, 403 verified)
  • —Accepted mappings link evidence to the clause assessment but never change assessment status; AI output is always review-pending and treated as untrusted input (prompt-injection hardened)
  • —Gap report in Standards: no_evidence / candidate_found / evidence_ready gap types with expected evidence, linked sources and one-click task creation (dedupe-safe)
  • —UI: extraction panel + review controls in Evidence repository, mapping chips + gap report in Standards & requirements, AI review queue card in Overview; desktop + mobile verified, no console errors
  • —Cross-tenant isolation verified: cross-org extract/review/list requests return 404 via requireRecord checks; fixture run tr-295bee57 cleaned (63 records, 0 missing, 0 halted) and profile restored
syncUserOrganizationstenantAiExtracttenantAiReviewtenantAssessmentsEvidenceDocMappingEvidence repositoryStandards & requirementsOverview dashboardTestRun fixtures

1.5.0

2026-10-16 · 1.2.3 Onboarding safety, tenant integrity & final regression

tested

Onboarding safety (T-44), test-fixture protection, and final regression

  • —T-44 root cause fixed: the onboarding wizard previously auto-adopted the most recent ungenerated organization and silently overwrote it. The wizard now shows an explicit choice (continue a SPECIFIC pending organization, bound to its id, or create a new one) and never adopts an organization by record order
  • —Resume is id-bound: the wizard remembers the explicitly chosen organization id per browser and per-organization step; refresh, new tab, and re-navigation resume the same organization and step without showing the chooser or changing context silently
  • —Creating a new organization always creates a record with a new id; pending organizations are never overwritten without an explicit user action. Server-side verification before generateWorkspace (active Membership + capability) is unchanged
  • —New TestRun entity and testFixtures backend function: every test run has a unique id and an explicit manifest of created record ids; cleanup only deletes verified manifest records, refuses organizations created before the run started, halts when an organization owns records outside the manifest, and supports dry-run
  • —Fixture-run deadlock fixed: a run halted during cleanup (status failed) can still be extended via registration so the operator can verify and resolve the halt before re-running cleanup
  • —Regression executed end-to-end with uniquely identified fixtures (run tr-3d275ca4): wizard flows, resume, refresh, multi-standard selection, generation, regeneration, cross-tenant and ownership controls, cleanup proofs, and full page + mobile sweep; all fixtures removed, real organization intact
  • —Residual documented: concurrent sync invocations can race the initial owner bind and create a duplicate owner membership for the same user and role (no privilege impact); mitigation documented for a future dedupe pass
  • —Operational note: heavy automated passes can hit entity API rate limits; the regression protocol now verifies database state before resuming after any timeout
Onboarding wizardTestRun entity (new)testFixtures backend function (new)syncUserOrganizations (verified unchanged)generateWorkspace (verified idempotent)tenant gateways (verified unchanged)

1.4.0

2026-10-16 · 1.2.2 Release gate, owner-recovery hardening & independent user verification

tested

Owner-recovery hardening, audit trail, release-gate verification and incident report

  • —Owner-repair loop closed with technical controls: sync never auto-grants owner on an organization that has (or had) any membership or audit history; initial ownership bind is allowed only for genuinely brand-new organizations (no membership records, no audit trail)
  • —New AuditEvent entity with platform-admin-only RLS on every operation: invitations, acceptance, revocation, role changes, ownership initial bind, transfer, and recovery are recorded with actor, previous/new state, and reason; recovery requires a reason of at least 10 characters
  • —transferOwnership workflow added (owner-only, target must be another active member, caller demoted to admin, audited); changeRole now refuses to demote the last active owner
  • —recoverOwner explicit recovery path: platform-admin-only, mandatory reason, refuses when an active owner already exists, target user verified server-side, fully audited
  • —Race condition found and fixed during testing: a stale index could re-bind ownership onto a just-deleted organization; initial bind now performs a strong-consistency existence check
  • —Regression onboarding executed end-to-end with live wizard (create, autosave, resume, framework selection, generation, dashboard); generated workspace verified and cleaned up
  • —INCIDENT (data loss, recovered via trash): the onboarding wizard's resume logic silently adopted the user's real organization (PT. JEMARA, not yet generated) as the regression fixture; it was renamed, regenerated, and then deleted during cleanup. Record rests in the entity trash for 30-day restore. Onboarding resume hijack recorded as a HIGH defect pending fix.
  • —Final state verified: E2E Test Org A untouched, all test fixtures removed, profile organization list repaired
syncUserOrganizationstenantOrgSettingstenantAuth shared moduleAuditEvent entity (new)Membership governanceOnboarding wizard

1.3.1

2026-10-16 · 1.2.1 Final security verification

tested

Phase 1.2.1 final security verification and regression report

  • —Final security verification executed with isolated fixtures: cross-tenant denial, revoked-access denial, profile-list forgery, record-id injection, missing-record 404 without leaks
  • —Employee role matrix verified server-side incl. forged payload roles ignored
  • —Invitation lifecycle verified: duplicate invite blocked, acceptance sync binds verified email and updates members array, gateway role change and revocation enforced, self-revoke blocked, owner-grant escalation from admin blocked
  • —Separation of duties re-verified: document creator cannot approve own document
  • —generateWorkspace re-run idempotent (zero new records); concurrent double-run did not duplicate
  • —Fixtures cleaned: org B/C and all test records deleted; real organization verified untouched
  • —Documented residual risks: creator-repair loop can reinstate ownership if a membership is DELETED (not revoked); check-then-create race window in generateWorkspace; single-identity test limitation
tenantAuth shared moduleall tenant gatewayssyncUserOrganizationsgenerateWorkspaceMembership lifecycleOrganization settings

1.3.0

2026-10-16 · 1.3 Branding & PDF export

tested

Organization branding and branded PDF exports

  • —New organization branding: logo (private upload), address, phone, email, and disclaimer, managed in Organization Settings
  • —Shared PDF branding module: organization logo and name in the header, logo + address/phone/email + disclaimer note + page numbers in the footer, stamped on every page
  • —Audit-readiness dashboard can be exported as a branded PDF report
  • —Each controlled document can be exported as a branded PDF (number, revision, status, content)
  • —Branding is saved through the membership-verified settings gateway with field whitelists and length limits
Organization entitytenantOrgSettingsSettings pageOverview pageDocuments pagepdfBranding module

2.5.1

2026-10-16 · 2.5A Production safety preflight & staging preparation

tested

Read-only preflight: staging/recovery options mapped, membership anchor dry-run clean (0 discrepancies), no production data or code changed

  • —INSPECTION ONLY - no application code was changed in this phase
  • —Mapped platform staging options: app clone copies code/backend functions but starts with an empty database; app users not copied; integrations copied but must be reconnected; secrets/files copy behavior not specified by docs (flagged unverified)
  • —Mapped recovery options: per-table CSV export, 30-day 'Recently deleted' record restore, automatic backups plan-dependent (availability on current plan NOT verified from builder environment), code rollback via Version History
  • —Executed read-only membership dry-run: 1 organization, 1 active + 1 invited membership, 0 anchor discrepancies (active_not_anchored=0, anchored_without_active=0) - no backfill required
  • —Verified membership lifecycle paths exist in gateway (invite/revoke/changeRole/transferOwnership/recoverOwner) with convergent dedup in syncUserOrganizations; Membership remains sole server-side authorization source
  • —Confirmed two-account procedure C-01..C-15 and execution runbook are present and complete
  • —Recommended safest staging path: clone app as isolated staging environment, register two independent accounts there, execute C-01..C-15 against the clone; production remains untouched
  • —Noted in-flight Phase 2.6 setup items (1 inert invited membership, 1 disposable fixture evidence, C-09 probe result recorded) - no two-account pass claimed, suite NOT executed

2.5.2

2026-10-16 · 2.5B Isolated staging provisioning

blocked

Staging provisioning prepared and inventoried - BLOCKED on manual owner clone action; no clone claimed created, production untouched

  • —PROVISIONING PREP - no production code or data changed
  • —Confirmed the only official staging mechanism is the dashboard App Settings clone, requiring manual owner action; builder cannot create the clone - provisioning recorded BLOCKED, no clone claimed
  • —Inventoried external-facing surfaces a clone could inherit: NO scheduled workflows, NO webhooks, NO email templates, NO agents, NO server routes, NO function secrets (no process.env usage), NO authorized OAuth connectors, NO push/email-sending functions - minimal inheritance risk
  • —Only unavoidable staging outbound: platform auth emails (OTP/invite) to the owner's own mailbox during test-account registration - bounded and expected
  • —Recorded production data fingerprint (Organization=1, Membership=2, Evidence=1, Assessment=14, Framework=10, Changelog=14) as the database-separation proof: staging must show 0 on every entity until fixtures are seeded
  • —Compiled post-clone staging verification checklist (identity, DB separation, auth, storage, secrets, integrations, email surface, no production exposure) and the fixture plan ordering (two real accounts in staging first, fixtures registered in staging TestRun manifest, no synthetic auth records)
  • —Provided owner manual steps: clone from App Settings, keep integrations disconnected, inspect staging secrets, register A1+A2 plus-alias accounts in staging only
  • —Platform does not document whether secrets/uploaded files are copied by cloning - both flagged for post-clone inspection; staging safety NOT claimed

2.5.3

2026-10-16 · 2.5 Minor feature - public site logo setting

tested

Admin-manageable site logo for the public landing header and footer (SiteSetting entity + upload dialog)

  • —New SiteSetting entity: single site-wide record holding logo_url (public file URL) and logo_name; read is public, create/update/delete restricted to platform admins
  • —New SiteLogo component: renders the uploaded logo in header and footer (3 placement points) with the previous text lockup as default fallback; shared single-fetch cache, updates instantly via an app event when saved
  • —New LogoSettingsDialog: gear icon visible only to signed-in platform admins next to the Sign in button; upload (stored publicly - required so anonymous visitors can load it), preview, save, and reset-to-default actions
  • —LandingHeader and LandingFooter now render SiteLogo instead of the hardcoded brand image and text
Landing page (header/footer)SiteSetting entity

2.7.0

2026-10-16 · 2.7 Minor feature - CB Relationship module

tested

CB Relationship module: certification body profiles and engagement log (the final planned module)

  • —New CertificationBody entity: certification body profile per organization with accreditation, relationship status (prospect/evaluating/active/former), primary contact, website and notes
  • —New CbInteraction entity: engagement log entry per CB (inquiry, quotation, contract, Stage 1/Stage 2/surveillance audit, meeting, call, email, complaint) with summary, outcome, follow-up date and owner; deleting a CB removes its interactions
  • —New tenantCbRelationship gateway: reads require 'view', all mutations require 'manage_registers'; every record access verifies organization membership and record ownership server-side (cross-tenant record ids rejected with 404)
  • —New workspace page CB relationships (/workspace/cb-relationship, sidebar entry): CB cards with status badges and interaction counts, detail panel with inline status change and engagement log, forms to add/edit CBs and log interactions, follow-up overdue highlighting
  • —Registered route /workspace/cb-relationship in the app router
Workspace UINavigationCB Relationship module

2.8.0

2026-10-16 · 2.8

tested

Incident Log module and requested URL aliases

  • —New Incident Log module: operational issues with category, severity, location, immediate action, root cause and resolution (ISO 10.2 / compliance reporting)
  • —Incident entity with admin-only direct access; all app-user access via membership-verified tenantIncidents backend gateway (view for reads, manage_registers for mutations)
  • —Incident Log workspace page: filter chips by status, severity/status badges, detail panel with status dropdown, add/edit/delete with confirm
  • —Sidebar navigation entry 'Incident Log' under Corrective Actions
  • —Requested URL aliases registered: /workspace/dashboard, /workspace/my-tasks, /workspace/audit-prep, /workspace/team-access, /workspace/internal-audit-log, /workspace/training-records, /workspace/vendor-assessment
Incident entitytenantIncidents gatewayIncident Log pageWorkspace navigationApp routing

2.9.0

2026-10-16 · Phase B - Commercial Management (leads, templates, proposals, share links, client acceptance)

tested

Commercial Management Phase B with evidence-based post-implementation verification

  • —Commercial Management module: Leads & Clients, Proposal Templates (5 seeded), Proposals, Commercial Settings
  • —Admin gateway tenantCommercial (server-verified platform-admin role on every action) and public token-gated gateway publicProposal
  • —Server-side financial integrity: every subtotal/discount/tax/total recomputed from line items; client-sent amounts never trusted
  • —Share links: 64-hex server-generated tokens, 1-90 day expiry clamp, server-side validation of revoked/expired/invalid tokens on every access
  • —Client acceptance on public page: mandatory signer identity + authorization + terms confirmations, accepted_snapshot freeze, append-only decision_history, audit events
  • —VERIFICATION FIX: template placeholders {{client_name}}/{{contact_name}} are now substituted server-side at proposal creation (previously leaked raw into public documents)
  • —Verified frozen state: accepted proposals reject edits, double-accept, duplicate/sent delete; duplicate creates a clean draft
  • —Post-verification cleanup: all QA test clients and proposals deleted; production commercial data empty and clean
  • —Phase C (Invoice, Payment Receipts, proposal-to-invoice conversion) intentionally NOT built in this phase
Commercial ManagementtenantCommercial gatewaypublicProposal gatewayWorkspaceLayout sidebarChangelog

2.9.1

2026-10-16 · Phase B - Commercial Management (final acceptance gate)

tested

Acceptance gate v2.9.0: persistent proposal numbering, PDF verified end-to-end, date-format fix

  • —DEFECT FIXED (numbering): proposal numbers were derived from the record count, so deleting records could reissue an already-used number. Allocation now uses a persistent monotonic sequence stored in Commercial Settings (proposal_seq / proposal_seq_year), floored at the highest existing number of the current year; numbers are never reused after deletion, cancellation or archiving. Issued business documents keep their numbers unchanged.
  • —Concurrency guard: after creating a proposal the server re-checks number uniqueness; on a concurrent collision the earliest record wins and the losing request removes its own record and returns 409. Verified with two truly parallel creations: one winner, one 409, zero duplicates stored; retry succeeded with the next number.
  • —DEFECT FIXED (documents): generated PDFs ignored the configured document date format and always printed ISO dates. The public payload now includes the configured date format and the PDF renders DD/MM/YYYY when so configured (verified in the generated file).
  • —Real-PDF verification: a test proposal produced a 4-page PDF through the actual share page download flow; file re-opened and inspected (valid %PDF structure, EOF, page count; proposal number, client, branding, line items, subtotal/tax/total amounts, dates all correct; no raw placeholders, no share token, no internal fields).
  • —Security: anonymous direct-URL calls to the admin gateway are denied by the server with 401. Post-changelog fix recorded: the initial anonymous denial returned HTTP 500 because the authentication exception in requirePlatformAdmin was not wrapped; the gateway now catches it and returns 401 explicitly. Retested anonymously (401 Unauthorized), authenticated as admin (200, no regression), and with an invalid public token (404). Non-admin role behavior remains NOT TESTED live (no second account provisioned); enforcement is server-side role checks plus admin-only entity RLS.
  • —Gate cleanup: 1 test client and 6 test proposals deleted; audit events retained (append-only); persistent sequence left at 6 so no issued number is ever reused.
tenantCommercial gateway (proposal number allocation + collision guard)publicProposal gateway (provider payload)proposal PDF generator (date format)CommercialSetting entity (+2 sequence fields)Changelog

2.9.2

2026-10-16 · Phase B - Commercial Management (cover artwork verification gate)

tested

Post-upload cover verification: artwork covers render correctly in generated proposal PDFs

  • —Verification only, no feature changes: the owner uploaded approved front/back cover artwork (JPEG, ~1.4MB / ~0.8MB) to the Integrated IMS and General ISO proposal templates.
  • —Verified the stored cover URLs are real, accessible files (HTTP 200 image/jpeg) and are consumed by the PDF generator, not just shown in the template editor preview.
  • —End-to-end PDF test with marked fixture PRP-2026-0007 (client PT QA-COVER-GATE-20261016, template: Proposal Integrated Management System ISO 9001+14001+45001): front and back cover artwork render full-bleed on their own pages, not blank, not distorted.
  • —PDF integrity: 2,203,083 bytes, 5 pages, all pages one identical A4 MediaBox (595.28 x 841.89 pt), date format DD/MM/YYYY respected, 0 generator/console errors.
  • —Cleanup: the marked test proposal was cancelled via the gateway (share link revoked, audited) and then removed along with the marked test client; proposal numbers 0001-0007 are permanently consumed (sequence never reuses issued numbers); AuditEvents preserved.
proposalPdf generator (cover rendering, verified)tenantCommercial gateway (fixture via real flow)publicProposal gateway (share view + PDF download flow)

2.9.3

2026-10-16 · Phase B - Commercial Management (final live role-access gate)

tested

Live security gate: anonymous access, public token gating and admin access verified live; non-admin two-role test remains blocked by prerequisites

  • —Verification only, no feature changes. v2.9.1 and v2.9.2 preserved; this is a new version entry.
  • —Code audit re-confirmed: every tenantCommercial action passes requirePlatformAdmin (401 unauthenticated / 403 non-admin, enforced server-side before any action), all Commercial entities are RLS admin-only on create/read/update/delete, the Commercial menu group is admin-filtered, and publicProposal returns a whitelisted payload that never includes the share token.
  • —LIVE (anonymous, no session): direct POST to tenantCommercial for settings_get, clients_list and clients_create all returned 401 Unauthorized; an attempted fake write created no record (0 leftovers).
  • —LIVE (public gateway): invalid/garbage token 404; expired link 404; revoked link 404; valid token 200 with correct proposal payload; accept without confirmation flags 400 and reject with a too-short reason 400 (no state change). The public UI route for an invalid token renders the denial page "Proposal tidak dapat dibuka".
  • —LIVE (admin, Akun A isoregister.co.id@icloud.com): Commercial Dashboard loads via the real route, gateway update/share/revoke/cancel and client delete all work on a marked fixture (PRP-2026-0008, PT QA-ROLE-GATE-20261016); totals recomputed server-side (1,000,000 + PPN 11% = 1,110,000).
  • —NOT TESTED (prerequisites unmet): no isolated staging environment and no second non-admin account (Akun B) are available to the builder; creating production accounts is out of scope per this gate. Non-admin denial could not be exercised live and remains unproven by live evidence.
  • —Observation for a future fix (no code changed per gate rules): commercial routes have no client-side role guard; a non-admin opening /workspace/commercial directly would see the page shell before data calls fail with 403. No data exposure (all data flows through server-side admin checks), but an admin-only route guard would improve defense in depth.
  • —Cleanup: marked fixture cancelled via the gateway (audited) then removed with its test client; 0 proposals / 0 clients remain; proposal sequence monotonic at 8 (numbers 0001-0008 permanently consumed, not reset); 77 commercial AuditEvents preserved.
tenantCommercial gateway (admin enforcement, live-verified for anonymous + admin)publicProposal gateway (token gating, live-verified)Commercial RLS (code-audited)workspace commercial routes (observation: no client-side role guard)

2.9.5

2026-10-16 · Phase C - Commercial Management (Invoice, Payment, Receipt)

tested

Tahap C implemented and live-verified: invoice conversion with frozen snapshots, server-side payment validation with automatic receipt numbering, token-gated public invoice sharing, and dashboard receivables KPIs

  • —Implemented full Tahap C (Invoice, Payment, Receipt): accepted proposals convert into invoices as a frozen server-side snapshot (line items, totals, client identity from the accepted proposal; double-conversion rejected 409).
  • —Invoice numbering INV-<year>-<seq> and receipt numbering RCP-<year>-<seq> allocated from persistent monotonic sequences in CommercialSetting (never reused after deletion).
  • —Payments validated server-side (amount > 0, never above the remaining balance); amount_paid and paid/partially_paid status always recomputed server-side on every payment create/delete; paid invoices cannot be cancelled.
  • —Public invoice share links: server-generated token only authorization; draft invoices cannot be shared (409); revoked links dead immediately (404); public view returns a whitelisted payload (provider, client, frozen items, totals, payments, balance) without the token.
  • —Shared public-share helpers (todayStr/denied/shareActive) extracted to base44/shared/publicShareUtils.ts to remove duplication between publicProposal and publicInvoice.
  • —Frontend: Invoices list (search/status filter/pagination, create-from-accepted-proposal dialog, PDF/share/cancel/delete actions), Invoice editor (draft-only edits for due date/terms/notes/PDF download flag; frozen line items; payment history with per-payment kwitansi PDF and delete), public /invoice/:token share page with download gating, PaymentDialog and InvoiceShareDialog.
  • —CommercialDashboard adds Outstanding invoices KPI (outstanding, collected, overdue count) and an invoices-by-status panel, all traceable to live server aggregates; CommercialSettings adds invoice/receipt prefixes and default invoice due days.
  • —ProposalEditor: accepted proposals now expose Create invoice (or View invoice once converted), so the full commercial lifecycle lead -> proposal -> acceptance -> invoice -> payment -> receipt runs end to end.
  • —Security unchanged in shape: all commercial data remains RLS admin-only and every gateway action requires platform admin server-side; commercial audit events continue under the 'platform' organization sentinel.
tenantCommercial gateway (invoices_*, payments_* actions; server-side frozen snapshots, validation, sequence allocation)publicInvoice gateway (token-gated public invoice view; shared helpers extracted to base44/shared/publicShareUtils.ts)Commercial UI: Invoices list page, Invoice editor, public InvoiceShareView, InvoiceDocumentView / InvoiceShareDialog / PaymentDialog componentspdfInvoice.js (Invoice + Receipt kwitansi PDF generators, CBMS branding)CommercialDashboard (Outstanding invoices KPI, invoices-by-status panel)CommercialSettings (invoice/receipt prefixes, default invoice due days)ProposalEditor (Create invoice / View invoice on accepted proposals)

1.2.1

2026-10-15 · 1.2 Security Testing

tested

Security test round: gateway defect fixes and re-verification

  • —Document gateway now stamps the creator (owner field) on create, so separation of duties on approval is enforced end-to-end; self-approval of own documents is rejected server-side
  • —Evidence gateway create now returns the record id, enabling correct verification flows
  • —Invitation flow rebuilt around email-keyed Membership records: duplicate invitations to active or already-invited members are rejected; the platform user lookup that failed inside functions is no longer used
  • —Invitation acceptance at sign-in now also anchors the user in the organization's member list, so newly joined members can read the organization
  • —Documents page hides approval options for the user's own documents in the UI as well
tenantDocumentstenantEvidencetenantOrgSettingssyncUserOrganizationsDocuments pageSettings page

0.2.0

2026-10-15 · 1.1 — Deep validation, security audit & end-to-end testing

tested

Phase 1.1 validation: security hardening, onboarding resume, idempotency verified end-to-end

  • —SECURITY FIX (cross-tenant self-join): Membership.create RLS previously allowed any authenticated user to create a membership in ANY organization, which profile sync then propagated into the user's tenant list, granting cross-tenant read/write. Create now requires the caller to already belong to the target organization (platform admins excepted).
  • —SECURITY FIX: owner-membership creation during onboarding moved server-side into syncUserOrganizations, which verifies the caller can read the organization before creating the membership. Clients can no longer mint memberships.
  • —DEFECT FIX: onboarding wizard now resumes — the most recent ungenerated organization is hydrated on load and the saved step is restored. Previously every revisit to /onboarding silently created a duplicate organization and lost all progress.
  • —DEFECT FIX: generateWorkspace draft-policy idempotency now counts any policy document for the framework, not only drafts — approving the generated draft policy no longer causes a duplicate policy on regeneration.
  • —UI FIX: onboarding error text and the framework-selection checkmark were unreadable on the light theme; corrected to accessible contrast.
  • —DATA LABELING: all 10 framework records relabeled version 0.9-preliminary / under_review — they carry the generic Annex SL high-level structure only, not standard-specific requirement mappings.
Entity: Membership (RLS)Backend function: syncUserOrganizationsBackend function: generateWorkspaceOnboarding wizardFramework registryOnboarding UI contrast

0.1.0

2026-10-15 · Phase 1 — Foundation

implemented

Platform foundation: brand, multi-tenant data model, onboarding, and live dashboard

  • —Established ABeam brand foundation (dark theme, sharp corners, gold/brown CTAs) across CSS and Tailwind
  • —Created 13 entities with multi-tenant row-level security: Organization, Membership, Framework, Assessment, Document, Evidence, Risk, Task, Finding, CorrectiveAction, Notification, Subscription, Changelog
  • —Seeded the ISO framework registry with 10 standards (9001, 14001, 45001, 27001, 37001, 22000, 13485, 22301, 50001, 42001) using the public Annex SL clause structure
  • —Built the public marketing website with hero, standards, platform, AI, security, pricing, and FAQ sections
  • —Built the 7-step smart onboarding wizard with autosave and idempotent workspace generation
  • —Implemented syncUserOrganizations and generateWorkspace backend functions with membership verification
  • —Built the live audit-readiness dashboard with real database aggregates and counts
  • —Built operational modules: Implementation Roadmap, Standards & Requirements, Documents, Evidence, Risks, and Organization Settings
  • —Wired authentication, protected routes, and the organization context with tenant isolation
Public websiteAuthenticationOnboardingWorkspace dashboardRoadmapStandardsDocumentsEvidenceRisksSettingsBackend functionsData modelRLS