Technical notes on web development, DevOps, and AI integration.
1 article
An append-only audit table written after each successful mutation, with no foreign key so rows outlive deleted accounts.
TL;DR: A security review found the app couldn't answer who changed a record, since app logs rotate and binlogs lack actor context. The fix is a dedicated audit_logs table written after successful admin mutations, append-only, with indexes and best-effort inserts that never break requests. Residual risk: a failed insert leaves a silent gap; metrics and alerting remain future work.