The ^ event prefix currently works only on the following types of events: <list of events that doesn't include ON NOTIFY or ON UNOTIFY>
Not only does the ^ prefix work in both events, but the effect of /haltdef in NOTIFY carries over to UNOTIFY. To demonstrate, this was the only script loaded:
on ^*:NOTIFY:{ if ($nick == maroon) haltdef | echo -s NOTIFY $nick $halted }
on ^*:UNOTIFY:{ echo -s UNOTIFY $nick $halted }
For all other nicks, these events both get triggered, and display '$nick $false'. But for the nick 'maroon' these events trigger with messages
NOTIFY maroon $true
UNOTIFY maroon $true
... where the $halted value for the maroon nick carries over from the NOTIFY event to UNOTIFY in spite of UNOTIFY not containing the /haltdef command.
If there is no ^ on the UNOTIFY event that didn't contain "haltdef", the "maroon has left" message displays normally, as does the offline-sound configured in addressbook/notify.
If this is desired behavior, it would be helpful to mention that behavior on the /notify and/or /halted pages. If it's supposed to be that way, are there other pairs that should also behave the same? i.e. /haltdef for maroon in ON JOIN using the ^ prefix doesn't cause the ^ in ON PART to also automatic-trigger /haltdef suppression of the part-message too.