You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 11, 2026. It is now read-only.
Structured logger (src/lib/logging/logger.ts, Issue 10.1/#403) dan audit trail (awcms_mini_audit_events, sama) sudah ada dan sudah diperkuat keamanannya (redaksi, RLS, GET /logs/audit dengan keyset pagination sejak Issue #435). Tapi tiga gap operasional tercatat eksplisit sebagai backlog di src/modules/logging/README.md §Belum tersedia dan docs/awcms-mini/20_threat_model_security_architecture.md §Matrix kepatuhan (A.8.16), belum pernah jadi issue tersendiri:
Correlation ID (X-Correlation-ID) di-set middleware untuk semua request, tapi hanya diwiring end-to-end ke ApiMeta.correlationId pada satu endpoint (GET /logs/audit, sebagai demonstrasi Issue 10.1) — endpoint lain tidak menyertakannya di body respons.
Tidak ada retensi/purge untuk awcms_mini_audit_events — tabel append-only tumbuh tanpa batas, tidak ada kebijakan atau mekanisme pembersihan (beda dari awcms_mini_idempotency_keys yang doc 04 sudah tetapkan retensi 7–30 hari).
Tidak ada extension point bagi aplikasi turunan/deployment untuk memasang consumer log/audit (alerting, export, SIEM) — Issue Peningkatan: security hardening berbasis standar (OWASP Top 10, ASVS, ISO 27001) #437 secara eksplisit men-scope "monitoring/alerting terpusat" (ISO 27001 A.8.16) di luar base generik ini, tapi base ini belum menyediakan titik pemasangan untuk itu sama sekali.
Tujuan
Mengaktifkan sistem log yang sudah ada menjadi kemampuan operasional yang benar-benar bisa dikelola (correlation ID lengkap, retensi eksplisit, titik ekstensi observability) — bukan membangun SIEM/dashboard monitoring baru (itu tetap di luar cakupan sesuai batas doc 20).
Scope
Correlation ID full-propagation: wiring ApiMeta.correlationId ke seluruh endpoint publik (bukan hanya satu demo), konsisten dengan header X-Correlation-ID yang sudah ada di semua respons sejak Issue 10.1.
Retensi/purge awcms_mini_audit_events: kebijakan retensi eksplisit (durasi, didokumentasikan di doc 04 sejajar idempotency_keys) + mekanisme purge (skrip CLI atau job terjadwal, bukan endpoint publik — pola sama seperti dispatcher Issue Peningkatan: kerasan backend & integrasi eksternal (outbox, resiliensi, observability) #436), tunduk pada aturan retention/legal doc 04 (physical delete hanya untuk retensi berizin, tidak boleh memutus FK). Aksi purge itu sendiri harus terekam sebagai audit event (tidak boleh purge diam-diam).
Extension point observability: interface/hook opsional (mis. LogSink/AuditExportHook) supaya aplikasi turunan bisa memasang consumer tanpa mengubah kode inti — default no-op, tidak menambah dependency baru, tidak membangun SIEM nyata.
Verifikasi LOG_LEVEL benar-benar dihormati di lingkungan produksi (regresi-check, bukan fitur baru).
Secara eksplisit TIDAK membangun rotasi file log di dalam aplikasi — console.log/stdout tetap sumber kebenaran; capture/rotate adalah tanggung jawab lapisan deployment (docker logging driver/systemd journal, doc 18). Kalau praktik ini belum terdokumentasi jelas, tambahkan sebagai dokumentasi, bukan kode.
Definition of Done
ApiMeta.correlationId konsisten muncul di respons seluruh endpoint publik yang relevan, bukan hanya satu demo endpoint.
Kebijakan + mekanisme retensi/purge awcms_mini_audit_events terimplementasi, diuji (termasuk skenario purge nyata terhadap Postgres), dan aksi purge-nya sendiri diaudit.
Extension point observability tersedia dan didokumentasikan (default no-op, sesuai ADR-0006 "provider eksternal opsional"), dengan minimal satu contoh konsumen di test/dokumentasi.
Migration berurutan bila ada perubahan skema (kolom retensi/permission purge baru — TIDAK dibutuhkan, lihat komentar penutup); OpenAPI diperbarui bila ada endpoint berubah (tidak ada endpoint berubah); bun run check hijau; integration suite penuh terhadap Postgres nyata hijau; diverifikasi live.
Konteks
Structured logger (
src/lib/logging/logger.ts, Issue 10.1/#403) dan audit trail (awcms_mini_audit_events, sama) sudah ada dan sudah diperkuat keamanannya (redaksi, RLS,GET /logs/auditdengan keyset pagination sejak Issue #435). Tapi tiga gap operasional tercatat eksplisit sebagai backlog disrc/modules/logging/README.md§Belum tersedia dandocs/awcms-mini/20_threat_model_security_architecture.md§Matrix kepatuhan (A.8.16), belum pernah jadi issue tersendiri:X-Correlation-ID) di-set middleware untuk semua request, tapi hanya diwiring end-to-end keApiMeta.correlationIdpada satu endpoint (GET /logs/audit, sebagai demonstrasi Issue 10.1) — endpoint lain tidak menyertakannya di body respons.awcms_mini_audit_events— tabel append-only tumbuh tanpa batas, tidak ada kebijakan atau mekanisme pembersihan (beda dariawcms_mini_idempotency_keysyang doc 04 sudah tetapkan retensi 7–30 hari).Tujuan
Mengaktifkan sistem log yang sudah ada menjadi kemampuan operasional yang benar-benar bisa dikelola (correlation ID lengkap, retensi eksplisit, titik ekstensi observability) — bukan membangun SIEM/dashboard monitoring baru (itu tetap di luar cakupan sesuai batas doc 20).
Scope
ApiMeta.correlationIdke seluruh endpoint publik (bukan hanya satu demo), konsisten dengan headerX-Correlation-IDyang sudah ada di semua respons sejak Issue 10.1.awcms_mini_audit_events: kebijakan retensi eksplisit (durasi, didokumentasikan di doc 04 sejajaridempotency_keys) + mekanisme purge (skrip CLI atau job terjadwal, bukan endpoint publik — pola sama seperti dispatcher Issue Peningkatan: kerasan backend & integrasi eksternal (outbox, resiliensi, observability) #436), tunduk pada aturan retention/legal doc 04 (physical delete hanya untuk retensi berizin, tidak boleh memutus FK). Aksi purge itu sendiri harus terekam sebagai audit event (tidak boleh purge diam-diam).LogSink/AuditExportHook) supaya aplikasi turunan bisa memasang consumer tanpa mengubah kode inti — default no-op, tidak menambah dependency baru, tidak membangun SIEM nyata.LOG_LEVELbenar-benar dihormati di lingkungan produksi (regresi-check, bukan fitur baru).console.log/stdout tetap sumber kebenaran; capture/rotate adalah tanggung jawab lapisan deployment (docker logging driver/systemd journal, doc 18). Kalau praktik ini belum terdokumentasi jelas, tambahkan sebagai dokumentasi, bukan kode.Definition of Done
ApiMeta.correlationIdkonsisten muncul di respons seluruh endpoint publik yang relevan, bukan hanya satu demo endpoint.awcms_mini_audit_eventsterimplementasi, diuji (termasuk skenario purge nyata terhadap Postgres), dan aksi purge-nya sendiri diaudit.bun run checkhijau; integration suite penuh terhadap Postgres nyata hijau; diverifikasi live.Referensi
Doc 10 (audit helper, logger redaction), doc 16 (data access/integration), doc 20 §Matrix kepatuhan OWASP/ASVS/ISO 27001 (baris A.8.16, A.8.15), doc 04 (retensi/purge, klasifikasi data). Issue 10.1 (#403), Issue #435 (keyset pagination pada
/logs/audit), Issue #436 (pola dispatcher internal, circuit breaker per-provider), Issue #437 (security hardening, batas scope A.8.16). Skill:awcms-mini-audit-log,awcms-mini-integration.