Shipped in f21f71d: production 5xx responses return generic "Internal server error"; 4xx detail preserved; apiHandler uses logger.error with structured context.
Status: done (2026-05-18, confirmed 2026-05-24) · Source: [[Projects/personal-finance-notion/context/audit-2026-05-17-auth|Auth audit 2026-05-17 §C4]]
src/lib/apiHelper.ts — code >= 500 && NODE_ENV === "production" → masked messagelogger.error in catch path (no console.error in handler)logger.errorNone — 100% complete per audit scope.
src/lib/apiHelper.ts, src/lib/utils/logger.ts