Support reply/close delivers to stale supportTickets.createdByEmail snapshot instead of re-resolving live via createdByUserId->users.email (wrong-recipient if reporter email changed during ticket life)
db-mars-cc read-path finding 2026-07-26 (surfaced during the fleet shared-user-DB read-only inventory): the support reply/close server action (soporte/actions.ts) sends to supportTickets.createdByEmail — a snapshot of users.email captured at create_support_ticket_atomic time — and does NOT re-resolve live even though createdByUserId IS stored. A reporter whose users.email changes between filing and resolution gets the reply at the stale (own former) address. Sole divergent-copy delivery read in Mars; auth + practica-comentario + weekly-KPI all read live users.email. FIX: resolve the reply/close recipient live from createdByUserId->users.email; KEEP createdByEmail as the historical filing-record snapshot (do not deliver to it, do not drop it). Reversible. Class-A (email-send path) -> audit pre-push review, but audit-mars-ca offline -> fallback per evolutiva-commons Push-to-Done: coder self-PTD, retro cross-vendor review re-fired on audit return (see MARS-563). Low-frequency, real, not an emergency.
Questions
Activity
-
--body
-
Support reply+close resolve recipient LIVE from createdByUserId->users.email; createdByEmail snapshot demoted to fallback-of-record (used only on empty live resolve); two explicit edge branches (reporter soft-deleted/email NULL; createdByUserId NULL) each fall back + warn-log under category=support, notification guarded non-null. SHA cf6e422 v2.58.8, Class-A self-PTD PASS on audit-unavailable waiver (retro cross-vendor review MARS-563).