Retire fn_lifecycleInactivity date-auto-disable path + clear inactivity flags (live-incident remediation)
LIVE INCIDENT REMEDIATION. The daily cron 'pluto-lifecycle-inactivity' (cron.job jobid 2, 0 3 * * *) running public.fn_lifecycleInactivity() was date-auto-disabling accounts + emailing real students — a violation of the account-deactivation contract (bs-mrtgza1djze, closed 2026-07-20: NEVER date-auto-disable; Pluto leg must RETIRE fn_lifecycleInactivity autoDeactivate first). coder-pluto-cc EMERGENCY-PAUSED it 2026-07-20 (cron.alter_job(2, active:=false), verified active=f) on Elazar GO. State at pause: 121 users inactivityWarnedAt set (stage-1 email sent), 48 inactivityGracedAt set (stage-2 'final notice 30d' email sent), 0 inactivityDeactivatedAt (stage-3 NEVER fired — no account actually disabled). Zero un-sent emailOutbox rows. TASKS: (1) RETIRE the auto-deactivate path permanently per contract — drop stage-3 isActive=false write from fn_lifecycleInactivity (or drop the fn) + unschedule/remove cron jobid 2, so a re-enable can't resume the pipeline. Migration-disciplined, trigger-archive sentinel set (users is trigger-archived). (2) CLEAR the inactivityWarnedAt/inactivityGracedAt flags on the 169 affected live users so no future re-enable instantly deactivates the 48 past-grace. Keep inactivityDeactivatedAt handling per contract. CLASS-A (auth/user-state + touches users): audit-pluto-ca design-ping before apply + diff review before apply. Coordinate with audit directly. Pause is reversible and currently the only thing preventing recurrence — treat as high priority. NOTE separate open question for Elazar: whether to send a reassurance/retraction email to the 169 warned/graced students (coder-pluto-cc holding that, not part of this WI).
Sub-tickets — 2/2 done
Questions
Activity
-
Applied 087: fn_lifecycleInactivity dropped, cron jobid 2 unscheduled, 125 obsolete inactivity timestamps cleared. SHA 3d95a00. audit-pluto-ca PASS/complete. Column drop for the 3 inactivity timestamp fields deferred to a follow-up WI (blocked on PLUTO-628, now shipped/live).