Mirror the shipped snooze-countdown chain for the 30-min pre-notice notification: re-arm ACTION_PRE_NOTICE at each minute boundary via slot 9, self-stop at remaining<=1, self-heal from wall clock on missed ticks. Wire cancellation at all 5 sites (cancelAlarm, scheduleSpec no-trigger branch, snooze-transition branch, ACTION_SKIP_NEXT, ACTION_POSTPONE_NEXT) using AlarmScheduler's own requestCode formula to keep PendingIntent identity consistent.