Sanitized machine-readable regression receipt for the repaired coils/crm-upsert state guard: 16/16 mocked cases pass (write-once fields written once on the to-sent transition, surviving every later fixture byte-identical; non-lowercase follow_up_sent rejected before any mutation; invalid lifecycle transitions and incomplete first-send sets rejected with the row unchanged; sparse payloads never touch unrelated columns), plus a live read-only verification on the real CRM where all three guard classes fired with zero mutations. No email sent, no CRM row changed.