pub async fn audit( pool: &SqlitePool, actor: &Principal, action: &str, target_type: &str, target_id: &str, detail: Value, )
Append an immutable audit-log entry (best-effort; never fails the caller).